2016-03-08 95 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。如果在任务内发生任何异常 - 它们可能会使用相同的输入参数重试。

另一种可能的情况 - 你的任务写错了,每次运行选择相同的收件人设置。