我正在 rabbitmq 消息和 Django 应用程序之间建立一个日志桥,以将后台任务状态存储在数据库中以供进一步调查/审查,也可以通过 Django 管理界面重新发布任务。我想这没什么花哨的,只是标准的生产者-消费者模式。
- Web 应用程序发布到消息队列并将初始任务状态插入数据库
- Consumer,它是一个单独的python进程,处理消息并根据任务输出更新任务状态
问题是,数据库中缺少一些任务,因此从未执行。我怀疑这是因为消费者在执行 db commit 之前收到了消息。所以基本上,从 Model.save() 返回并不意味着事务已经结束并且整个通信中断。
有什么办法可以解决这个问题吗?也许我可以使用某种 post_transaction 信号?
先感谢您。