我正在使用 Celery 和 Django 和 RabbitMQ。当我这样做时
task.delay()
我得到了一个 AsyncResult,但任务永远不会到达芹菜工人,当我检查时
rabbitmqctl list_queues
我看到我的队列有 0 条消息。当我删除队列并再次执行"task.delay()"时,队列被重新创建,但它仍然是空的。
昨天花了太多时间解决这个问题。
事实证明,问题出在磁盘空间上:默认情况下,当可用磁盘空间低于 1GB 时,RabbitMQ 开始静默丢弃消息。
事实上,你可以在 RabbitMQ 启动日志中看到一条关于它的消息,但如果它运行了一段时间,你可能很难找到它。
要解决此问题,您只需清除足够的磁盘空间或修改 disk_free_limit RabbitMQ 设置即可。