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

问题描述

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

最近,我从拥有一个认的“celery”队列来执行我的所有任务,变成了为每个任务配备专用队列/工作线程。这包括由 celery beat 调度的任务,它们现在都进入名为“scheduler”的队列。

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

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

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

这就是我开始 celery beat 的方式:

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

这就是我开始工作的方式

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

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

提前感谢您的帮助!

解决方法

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

def data_city():
    name_city = city.get()
    cursor.execute('SELECT * FROM Info_Squadra WHERE Name_city=?',(name_city,))
    results = cursor.fetchone()
    return results

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...