芹菜为什么任务留在队列中

时间:2014-01-12 17:11:04

标签: python django rabbitmq celery amqp

所以我在使用带有RabbitMQ的Celery。我有一个注册用户的RESTful API。我正在使用远程Celery工作程序异步发送注册电子邮件,以便我的API可以快速响应。

from .tasks import send_registration_email

def register_user(user_data):
    # save user to the database etc

    send_registration_email.delay(user.id)

    return {'status': 'success'}

这很好用。电子邮件以非阻塞异步方式发送(如果失败则可以重试,这很酷)。问题是当我查看RabbitMQ管理控制台时。我可以看到send_registration_email创建了一个随机队列。类似的东西:

enter image description here

我可以看到该任务已成功执行。那么为什么随机队列永远留在RabbitMQ中呢?这是任务有效载荷:

{"status": "SUCCESS", "traceback": null, "result": true, "task_id": "aad10877-3508-4179-a5fb-99f1bd0b8b2f", "children": []}

1 个答案:

答案 0 :(得分:3)

这种正常行为,如果您在设置中配置了CELERY_RESULT_BACKEND。请点击此处:Celery result backend description

您可以禁用结果后端,或减少每个消息的生命周期。