我打算將芹菜用於我們的項目之一,我需要一些關於設計的建議。芹菜 - 設計和最佳實踐需要幫助
該應用會做什麼? 基本上,我希望能夠在同一時間,具有以下特點來運行多個進程:
- 一些方法來找出工作重複 - 如果一個進程運行了很長一段時間使用相同的參數,那麼理想情況下我們不應該再次提交流程。我不認爲芹菜目前支持這一點。我們正計劃通過在應用程序本身內部添加一些鎖定機制來規避此問題。這將要求我們在我們的應用程序中添加鎖定邏輯,僅用於我們不想做的芹菜。我們正在考慮的另一個解決方案是創建傳遞給我們即將提交的作業的參數(有效內容)的哈希簽名,並根據當前正在或正在隊列中的作業的哈希來檢查該哈希簽名。我猜測應該很容易找出隊列中所有正在運行的作業和作業(我們將保持任務狀態),然後使用我們傳遞給作業的數據/有效載荷來創建散列。
- 確定作業優先級的一些方法 - 儘管我們在所有工作人員上運行相同的代碼庫,但有些作業可能需要較長時間(根據我們傳遞的參數)。現在,我們想要做的是,如果我們將param A傳遞給作業,它應該比我們想用param B運行的作業具有更高的優先級。同樣,如果我傳遞一個名爲「immediate」的param,它應該被執行在另一個之前2.我想到的一個方法是讓所有工人都聽所有的工作;但作業調度員會在提交作業時將countdown = xx標誌添加到任務中。使用參數A的作業比使用參數B提交的作業具有更低的倒計時值。具有參數「立即數」的作業將沒有倒數值。我也在考慮讓1名工作人員專注於「直接」隊列。
我想知道如果你們之前做過類似的事情,我會非常感激的建議。