1

許多流行的任務隊列(例如Google GAE TaskQueue,Celery)都具有ETA /倒計時功能,允許任務在xxx秒後進入隊列。使用ETA/Countdown實現TaskQueue(如Celery)

我正在研究需要帶ETA功能的任務隊列的項目。但是,我必須使用Google Pubsub消息傳遞系統纔有一些限制。 Pubsub沒有ETA功能。我想知道如何爲任務隊列實現可靠和可擴展的ETA機制。歡迎使用一般體系結構思想和實際代碼示例。

我們的系統每秒排列600-2000個任務,其中約10%需要擁有ETA。這是一個分佈式系統和性能關鍵。

我試圖跟蹤芹菜的來源code,但找不到處理ETA的實際邏輯。如果有人能指向處理ETA的Celery的文件/代碼,那也是一件好事。

回答

0

我想我可能已經發現芹菜是如何做到的。在eventlet.py中,它使用eventlet的spawn_after功能來延遲工作人員創建「ETA」秒。

secs = max(eta - monotonic(), 0) g = self._spawn_after(secs, entry)