在 Django 中提交事务后有什么方法可以运行一些代码吗?
我需要将一些消息发送到rabbitmq 服务器进行离线处理,但是在提交Django 事务之前,消息会到达消费者。
我的消息是在模型的 post_save 信号中发送的。我正在寻找的是一种类似的机制,使用信号或其他东西,它会在提交后执行代码(如果事务失败则不执行任何操作)。
我还没有在 Django 中找到任何通用的方法。你有什么想法?
最佳答案
django-transaction-hooks为Django < 1.9解决了这个问题,功能是built into Django 1.9+ :
from django.db import transaction
def do_something():
pass # send a mail, invalidate a cache, fire off a Celery task, etc.
transaction.on_commit(do_something)
关于django - 在 Django 中提交事务后运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/950214/