我们在烧瓶0.10.1应用程序中使用带有Redis后端的celery 3.1.17。在我们的服务器上,从某个celery任务创建的每个celery任务都会被创建两次。例如,
@celery.task(name='send_some_xyz_users_alerts')
def send_some_xyz_users_alerts():
list_of_users = find_some_list_of_users()
for user in list_of_users:
send_user_alert.delay(user)
@celery.task(name='send_user_alert')
def send_user_alert(user):
data = get_data_for_user(user)
send_mail_to_user(data)
如果我们从应用程序中启动send_some_xyz_users_alerts
,则它将运行一次。然后,我看到每个用户的芹菜正在运行2个send_user_alert
任务。这两个任务具有不同的task_id。我们有2名工人在服务器上运行。有时,这些重复的任务在同一工作程序上运行。有时在不同的工人上。我已经尝试了很多,没有运气就找到了问题。如果有人知道为什么会发生,将不胜感激。在这些版本的芹菜和烧瓶上,一切正常运行了几个月,突然之间,我们的服务器上出现了这个问题。任务在本地环境中运行良好。