RabbitMQ重启后Celery撤销失效

2 投票
1 回答
711 浏览
提问于 2025-04-18 02:04

我们正在使用celery的eta任务来安排一些很远的任务(比如几个月后)。现在我们使用rabbitMQ作为后台,因为之前用mongo后台时,任务在工作进程重启后会丢失。

实际上,使用rabbitMQ后台的任务在celery和rabbitMQ重启后似乎是可以保留的,但撤销消息在rabbitMQ重启时似乎会丢失。我猜如果撤销消息丢失了,那些应该被取消的eta任务还是会继续执行。

1 个回答

1

这段话可能对你有帮助,内容来自文档(持久化撤销):

被撤销的任务列表是保存在内存中的,所以如果所有的工作进程重启了,这个被撤销的任务ID列表也会消失。如果你想在重启之间保留这个列表,你需要通过使用 –statedb 参数来指定一个文件,让这些信息存储在里面,供 celery worker 使用:

$ celery -A proj worker -l info --statedb=/var/run/celery/worker.state

撰写回答