我使用celery 作为任务队列,RabbitMQ作为消息队列,当使用延迟函数将我的任务推到队列时。我看到在兔子MQ中创建了3个队列。我不明白我们需要这2个额外的队列是什么,为什么。还有,我如何识别我的任务实际上被推到哪个队列?
celery 开始了:
celery -我的项目工作者-l信息
[tasks]
. app1.tasks.add
[2022-06-10 06:16:14,132: INFO/MainProcess] Connected to amqp://himanshu:**@IPADDRESS/vhostcheck
[2022-06-10 06:16:14,142: INFO/MainProcess] mingle: searching for neighbors
[2022-06-10 06:16:15,165: INFO/MainProcess] mingle: all alone
[2022-06-10 06:16:15,182: WARNING/MainProcess] /etc/myprojectenv/lib/python3.8/site-packages/celery/fixups/django.py:203: UserWarning: Using settings.DEBUG leads to a memory
leak, never use this setting in production environments!
warnings.warn('''Using settings.DEBUG leads to a memory
[2022-06-10 06:16:15,182: INFO/MainProcess] celery@ubuntu-s-1vcpu-1gb-blr1-01 ready.
[2022-06-10 06:17:38,485: INFO/MainProcess] Task app1.tasks.add[be566921-b320-466c-b406-7a6ed7ab06e7] received
[2022-06-10 06:16:15,182: INFO/MainProcess] celery@ubuntu-s-1vcpu-1gb-blr1-01 ready.
[2022-06-10 06:17:38,485: INFO/MainProcess] Task app1.tasks.add[be566921-b320-466c-b406-7a6ed7ab06e7] received
[2022-06-10 06:19:18,544: INFO/ForkPoolWorker-1] Task app1.tasks.add[be566921-b320-466c-b406-7a6ed7ab06e7] succeeded in 100.05838803993538s: 13
因此,每当我运行我的celery 工人,我看到这3个队列正在生成。
RabbitMQ管理
那三个队列是什么,celery 用它们做什么?
另外,由于队列基本上是持久数据库,因此也是持久队列,所以为什么当我停止我的工作线程时,它们会被删除呢?
1条答案
按热度按时间kadbb4591#
celery
队列是为了让你可以发送任务到那个特定的队列。每个订阅了这个队列的Celery worker都可以保留和运行发送给它的任务。.pidbox
队列由每个Celery工作人员创建,以支持远程命令的执行。celeryev
队列也是由每个Celery工作者创建的,用于监控。例如,每个Celery工作者每隔几秒钟就会广播心跳消息。这些消息将进入celeryev
队列。Celery文档没有给出关于这些队列的任何细节,所以人们不得不在Celery/Kombu源代码中寻找答案。https://github.com/celery/celery/issues/6371#issuecomment-716839203