2015-04-22 30 views
0

作爲健全性檢查的一部分,我想編寫一些代碼,以確保工作人員根據給定的設置啓動了一組正確的隊列。如何確定芹菜工作人員在運行時消耗哪些隊列?

芹菜運行,像這樣:

celery worker -A my_app -l INFO -Q awesome_mode 

我想制定出應用程序被初始化後,它排隊芹菜消耗。

例如,I由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: 
    ... 

回答

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] [email protected] ready. 
相關問題