首页 > 解决方案 > 从 celery 任务创建的任务被创建了两次

问题描述

我们在烧瓶 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从我们的应用程序开始,它会运行一次。然后我看到send_user_alert每个用户在 celery 中运行 2 个任务。这两个任务都有不同的 task_id。我们有 2 名工作人员在服务器上运行。有时这些重复的任务在同一个工作人员上运行。有时在不同的工人身上。我已经尝试了很多来找到问题,但没有任何运气。如果有人知道为什么会发生这种情况,我将不胜感激。在这些版本的 celery 和 flask 上运行了好几个月,突然我们在服务器上看到了这个问题。任务在本地环境中运行良好。

标签: flaskcelery

解决方案


推荐阅读