Celery用户指南建议在调用任务流程之前手动提交Django事务。
http://celery.readthedocs.org/en/latest/userguide/tasks.html#database-交易
我希望这个系统尽可能可靠。从事务提交和调用任务之间的崩溃中恢复的最佳做法是什么(即确保在提交事务时总是调用任务)。
顺便说一句,现在我使用的是我实现的基于数据库的作业队列,所以并没有这样的问题——我可以在事务中发送作业。我真的不确定我是否应该换成芹菜。
从django 1.9中添加了
transaction.on_commit(lambda: add_task_to_the_queue())