2017-09-27 173 views
0

我有多個隊列,我們​​假設這些是Q1Q2芹菜:限制隊列的任務

我也有一些任務,其中之一是T1

如何配置芹菜,以便工人只需要T1Q1,並從不接受Q2T1

回答

2

你可以用芹菜apps來實現。將不同類型的任務註冊到不同的應用程序,並僅在這些應用程序上運行工作人員(例如,請參閱芹菜工人命令中的-A myapp設置)。

或者,如果您沿着更簡單的方式使用different queues,也可能會成功。因此,如果您只管理將T1發送到隊列queue1和T2到隊列2,那麼您可以在celery worker上使用選項-Q queue1,因此它僅從隊列1接收任務。

+0

但如果我的員工聽'Q1',預計只有'T1'那裏,客戶端的一個仍然可以發送'T2'成'Q1'和芹菜仍然樂意接受它,因爲'T2'是一項註冊任務。我錯了嗎? – Art

+0

恐怕唯一的出路將是使用不同的應用程序。到目前爲止,有一些問題試圖通過我的應用程序運行帶有多個'celery.py'的Celery + Django,但我想它是可管理的。 – Art

+0

@Art是的,這就是爲什麼我說'如果你設法只發送T1到隊列名爲queue1'。 – tayfun

0

當你開始你的工人,你可以指定一個隊列爲他

celery -A proj worker -Q queue_name