2016-03-08 99 views
0

我有一個電子郵件任務在從現在開始的10天內有一個eta()。但是,我發現有些人每次收到5-6個重複的電子郵件。我之前遇到過這個問題,並且BROKER_TRANSPORT_OPTIONS設置得太低。現在我有這個在我的設置文件中:重啓芹菜是否會導致重複任務?

BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 2592000} #30 days 

所以這應該不成問題了。我只是想知道是否還有其他的東西可以導致它。即重新啓動芹菜。每次部署新代碼時,芹菜都會重新啓動,並且每週可能會發生5次或更多次,所以這是我能想到的唯一的事情。

任何想法?

謝謝。

+0

您正在使用哪家經紀商,您能看到排隊的任務嗎? – AndrewS

+0

@AndrewS我正在使用redis。是的,我可以看到排隊的任務。名單很長,所以很難通過查找來查看是否有任何問題。 –

回答

0

如果worker/beat進程沒有正確停止,則可以重複任務。你如何重新啓動芹菜工/打敗?檢查服務器的殭屍芹菜工,並打敗進程。嘗試停止所有芹菜過程,檢查沒有芹菜過程存在,並再次啓動。畢竟檢查ps ax | grep celery顯示新鮮的工人,只有一個節拍。

+0

我在supervisord下運行芹菜。我使用的命令是supervisorctl重啓芹菜。謝謝,我稍後會看看。 –

+0

所以我剛剛檢查過。只有一個進程正在運行。此外,supervisord啓動腳本是這樣的:'/ envs/flavourly/bin/python/envs/flavourly/bin/celery --app = flavourly.celery:app worker -P gevent --concurrency = 10 --loglevel = INFO' –

0

如果您設置了CELERY_ACKS_LATE = False,則在不正確的工人停止的情況下,任務不會重新啓動。在這種情況下,消耗後標記爲立即確認的任務。見docs

還要確保您的任務沒有啓用retry。如果在任務內發生任何異常 - 它們可能會使用相同的輸入參數重試。

另一種可能的情況 - 你的任務寫錯了,每次運行選擇相同的收件人設置。