我们有一个django-celery流程,现在有5个工作流程在生产中运行。它正确地接收和运行任务。这些进程运行插入两个队列的任务:live
和celery
。
用于运行芹菜过程的命令大致是:
manage.py celeryd -E --loglevel=WARNING --concurrency=5 \
--settings=django_settings.production_celery -Q live,celery
我现在刚刚构建了一个新系统,该系统应该在名为foobar
的不同队列上处理不同的任务。这些芹菜过程使用大致类似的命令运行:
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队列的内容吗?