【发布时间】:2010-10-31 07:34:59
【问题描述】:
有什么方法可以在 Django 中事务提交后运行一些代码?
我需要将一些消息发送到rabbitmq服务器进行离线处理,但消息在Django事务提交之前到达消费者。
我的消息是在模型的 post_save 信号中发送的。我正在寻找的是一种类似的机制,使用信号或其他东西,它将在提交后执行代码(如果事务失败则不执行任何操作)。
我还没有在 Django 中找到任何通用的方法。你有什么想法吗?
【问题讨论】:
-
我遇到了类似的问题。在 post_save 上,Publisher(进程 1)保存任务状态并发布消息。消费者(进程 2)接收消息并更新任务状态,该状态尚未在数据库中。有效的方法是让消费者在收到消息后睡一两秒钟。反正感觉很脏。
标签: django transactions signals commit