2013-09-11 52 views
12

這裏是我的情況:創建芹菜動態隊列

當到我的網站的用戶日誌,我排隊了一堆給定用戶(一般每個任務需要毫秒的100年代任務和有任務的100S每個用戶)。這些任務排隊到默認的芹菜隊列,我有100名員工正在運行。我使用websockets將任務的實時進度顯示爲任務在後端完成。如果我只有1或2個用戶活躍,生活就很好。

現在,如果我的一些併發用戶登錄到我的站點,後面的用戶排在最初的用戶後面,他們的任務餓死了(因爲所有任務都進入同一隊列)。我的想法是爲每個用戶創建一個動態隊列以確保公平。但是,根據芹菜文檔(http://docs.celeryproject.org/en/latest/userguide/routing.html#defining-queues),似乎我需要靜態定義隊列。

有關在我的方案中使用芹菜的最佳實踐的任何建議?

+0

豈不具有動態隊列打敗queing的對象?每個用戶的100個任務聽起來很多。難道這些不能被組合在一起,所以一名工作人員會一次性提取所有用戶的任務嗎?這樣用戶將有一個專門的工作人員進行登錄過程。所有登錄任務是否需要同步運行? –

+0

@JoeDoherty - 我不明白動態隊列如何擊敗排隊對象。然而,您將所有用戶任務分配爲一項大任務的建議非常有趣,並且肯定會緩解我的問題 - 謝謝!儘管從設計的角度來看,我試圖尋找一大批執行小型/快速任務的工作人員(而不是長時間運行的任務)。我仍然有興趣看看是否有一個選項可以即時創建隊列 - 雖然我批量處理用戶任務,但我可以看到這很有用。 –

+0

@JoeDoherty - 關於'所有登錄任務需要同步運行' - 答案是'不'。要求是他們都在合理的時間內完成,因爲用戶正在等待任務的結果在網站上完成。 –

回答