Trigering post_save signal only after transaction has completed
I think the simplest way is to use transaction.on_commit(). Here’s an example using the models.Model subclass Photo that will only talk to Elasticsearch once the current transaction is over: from django.db import transaction from django.db.models.signals import post_save @receiver(post_save, sender=Photo) def save_photo(**kwargs): transaction.on_commit(lambda: talk_to_elasticsearch(kwargs[‘instance’])) Note that if the transaction.on_commit() gets executed while not in an active … Read more