我们已经有一个 django-celery 进程,其中有 5 个工作进程在生产中运行了很长时间。它正确地接收和运行任务。这些进程运行插入到两个队列中的任务:live
和celery
。
用于运行 celery 进程的命令大致是:
manage.py celeryd -E --loglevel=WARNING --concurrency=5 \
--settings=django_settings.production_celery -Q live,celery
我现在刚刚构建了一个新系统,该系统应该处理不同队列上的不同任务,称为foobar
. 这些 celery 进程使用大致如下的命令运行:
manage.py celeryd -E --loglevel=WARNING --concurrency=5 \
--settings=django_settings.production_foobar -Q foobar
但是,当我尝试使用 运行新队列中的任务时,结果对象会无限期地my_task.apply_async(queue='foobar')
保持状态。PENDING
通过记录,我确定foobar
工人永远不会收到任务。所以现在我正在尝试调试任务消息在什么时候丢失。
(我们使用 RabbitMQ 作为我们的 AMQP 消息代理。)
如何确定芹菜队列的当前内容?我可以直接检查 RabbitMQ 队列的内容吗?