所以我在使用带有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创建了一个随机队列。类似的东西:
我可以看到该任务已成功执行。那么为什么随机队列永远留在RabbitMQ中呢?这是任务有效载荷:
{"status": "SUCCESS", "traceback": null, "result": true, "task_id": "aad10877-3508-4179-a5fb-99f1bd0b8b2f", "children": []}
答案 0 :(得分:3)
这种正常行为,如果您在设置中配置了CELERY_RESULT_BACKEND。请点击此处:Celery result backend description
您可以禁用结果后端,或减少每个消息的生命周期。