作为完整性检查的一部分,我想编写一些代码,以确保工作人员已根据给定的设置启动了一组正确的队列。
芹菜是这样运行的:
celery worker -A my_app -l INFO -Q awesome_mode
我想在应用程序初始化之后解决,Celery正在消耗这些队列。
例如,我编造了app.queues
:
app = Celery('my_app')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
if 'awesome_mode' in app.queues:
...
答案 0 :(得分:1)
经过一些交互式调试后,我发现app.amqp.queues
这是一个字典,其中键是队列的名称,值是Queue
。
不幸的是,字典在初始化后没有立即填充,但在worker_ready
信号之后可以正常工作。
在应用初始化后放置此代码似乎有效。它当然可能放在其他地方。
@worker_ready.connect
def worker_ready_handler(sender=None, **kwargs):
print(app.amqp.queues.keys())
工作人员记录:
[2015-04-22 07:41:01,147: WARNING/MainProcess] ['celery', 'awesome_mode']
[2015-04-22 07:41:01,148: WARNING/MainProcess] celery@zaptop ready.