2014-10-10 48 views
0

從我讀過的內容來看,似乎是芹菜工人停下來,它應該能夠在重新開始時從隊列中消耗。芹菜工人在被迫停車後不會重新啓動

爲了測試這個,我創建了3個虛擬機,每臺機器有2個芹菜工。我正在使用一個芹菜守護進程。一臺機器具有客戶端腳本,另一臺機器充當代理,儘管它們都運行rabbitmq。

當我啓動客戶端腳本時,我所有的工作人員都會收到任務(從日誌中可以看出)。爲了測試失敗後會發生什麼,我發出

service celeryd stop 

到我的一臺機器上。然後一分鐘後,我發出

service celeryd start 

到我停下來的機器一分鐘前。但是,在發出此命令後,我的客戶端腳本凍結並停頓,並且我上面的計算機上的工作人員再也不會收到任務。

對發生了什麼有什麼想法?我猜可能有一種可能性是,芹菜工作人員在關閉之前所做的最後一項任務是干擾?

僅供參考:我在我的客戶端腳本中收到結果後刪除了臨時隊列,但這並不認爲這會影響上述問題。

回答

1

是的,你是對的。當啓動關機時,工作人員將在實際終止之前完成所有當前正在執行的任務[請參閱 [celery document]

而且你最好看看相應工作人員的日誌,以確定它確實是根本問題。

順便說一下,您可以使用flower來監測芹菜。