title: best practice to override saving method in django model to be async using celery
body: <p>i am building a cloud system, i have two apps, 
  server apps which includes full functionality, and client app which including only input method, 
  so i am installing the client app in the customer branch as local app,</p>
  
  <p>i want override any models in the apps after saving the models locally, i will call a celery task to add this model in the queue to make sure it will arrive, even if the internet is down, i will do retry until internet is getting up,</p>
  
  <p>now i want the best practice to have a generic way to do it to any model</p>
  
  <p>i have two option </p>
  
  <p>1- overriding save method like this</p>
  
  <pre><code>def save(self, *args, **kwargs):
      super(Model, self).save(*args, **kwargs)
      save_task.delay(self)
  </code></pre>
  
  <p>or using signals like this</p>
  
  <pre><code>post_save.connect(save-task.delay, sender=Model)
  </code></pre>
  
  <p>which one is the best practice and i can make it generics for all the models of this project?</p>