如何防止 celery.backend_cleanup 在默认队列中执行

How to prevent celery.backend_cleanup from executing in default queue

我正在使用 python + flask + SQS,我也在使用 celery beat 来执行一些计划任务。

最近,我从一个默认的“celery”队列来执行我的所有任务,变成了为每个任务专门设置 queues/workers。这包括由 celery beat 安排的任务,这些任务现在都进入名为“scheduler”的队列。

在删除“celery”队列之前,我对其进行了监视以查看是否有任何任务会在该队列中结束。令我惊讶的是,他们做到了。

因为我没有工作人员从该队列中消费,所以我可以使用 AWS 控制台轻松检查堆积的消息。看到的是所有任务都是celery.backend_cleanup!!!

我无法从 celery 文档中找到如何防止这个 celery.backend_cleanup 被扔进我想摆脱的默认“celery”队列! docs on beat 不显示传递队列名称的选项。那么我该怎么做呢?

这就是我开始芹菜节拍的方式:

/venv/bin/celery -A backend.app.celery beat -l info --pidfile=

这就是我启动 worker 的方式

/venv/bin/celery -A backend.app.celery worker -l info -c 2 -Ofair -Q scheduler

请记住,我不想停止 backend_cleanup 执行,我只想让它进入我指定的任何队列。

在此先感谢您的帮助!

您可以在节拍任务设置中覆盖它。如果您愿意,也可以在此处将预定时间更改为 运行。

app.conf.beat_schedule = {
   'backend_cleanup': {
       'task': 'celery.backend_cleanup',
       'options': {'queue': <name>,
                   'exchange': <name>,
                   'routing_key': <name>}
   }
}