2017-09-13 82 views
7

我們將芹菜用於異步後臺任務,我們有2個隊列用於不同的優先級任務。我們有2個節點集羣單獨服務它們。事情如預期般運作良好。在芹菜中的多個隊列中優先隊列?

問:

我們得到多爲低優先級任務。爲了優化資源利用率,我想知道是否有辦法配置worker(偵聽高優先級隊列)來偵聽這兩個隊列。但只要有一份工作在那裏,就從更高優先級的隊列中選擇工作?否則返回低優先級隊列。

我已經通過討論@Celery Task Priority討論了基於優先級的任務調度。

但我的問題是優先隊列,而不僅僅是隊列中的任務。

回答

1

您可以通過在啓動時爲工作人員定義多個隊列來部分實現此目的。

您可以使用以下命令:另請參閱here瞭解更多詳情。

celery -A proj worker -l info -Q Q1,Q2 

雖然這種方法存在問題。它不會採用回退式方法來實現。 因爲,監聽多個隊列的工作人員均勻分配資源。

因此,即使在「正常優先級隊列」中存在某些內容時,您僅需從「高優先級隊列」處理的要求也無法實現。 這可以通過爲'高優先級隊列'分配更多的工人(可能爲75%)和25%'普通優先級隊列'來最小化。或基於你的工作負載的不同份額。

0

不幸的是,開箱即用芹菜是不可能的。

最佳解決方案是啓動2名工人。 1用於低優先級,其他用於n進程的高優先級。

當沒有高優先級任務時,具有低優先級任務的工作人員將使用所有資源,反之亦然。如果有兩項任務,則資源將均勻分配。

+0

它可以是一個解決方案。我會嘗試 。 –