【发布时间】:2023-10-03 17:17:01
【问题描述】:
所以我将 Celery 与 RabbitMQ 一起使用。我有一个注册用户的 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": []}
【问题讨论】:
标签: python django rabbitmq celery amqp