Надеюсь, что это может помочь кому-то, использующему Django 1.9 или новее. Начиная с версии 1.9 on_commit .
Так что в основном вы бы делали это так:
from django.db import transaction
transaction.on_commit(
lambda: send_msg_to_rabbitmqp(param1, param2, ...)
)
Если вы хотите сохранить post_save
, вы все равно можете использовать on_commit
:
@receiver(pre_save, sender=MyModel)
def my_handler(sender, instance, created, **kwargs):
transaction.on_commit(
lambda: send_msg_to_rabbitmqp(instance.id)
)