RabbitMQ:如何在使用celery处理任务时检查队列内容?

qoefvg9y  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(1)|浏览(163)

我已经在Django应用中使用RabbitMQ和Celery设置了一个基本的消息和任务队列。根据我的理解,当我使用延迟方法时,将我的任务推送到rabbitMQ队列,我的一个工作者从我的celery 应用程序中获取相同的任务并执行相同的任务。当我使用延迟将任务推送到队列时,有没有什么方法可以在我的消息队列RabbitMQ管理门户上查看相同的任务?由于任务几乎是立即获取和处理的,因此无法在门户上查看它们。
这是我所尝试的,我认为这是错误的,在我的任务方法中添加了一个睡眠计时器。

须藤纳米tasks.py

from __future__ import absolute_import, unicode_literals
from celery import shared_task
import time

@shared_task
def add(x, y):
    time.sleep(100)
    return x + y

已启动我的celery 应用程序

(myprojectenv) root@ubuntu-s-1vcpu-1gb-blr1-01:/etc/myproject# celery -A myproject worker -l info

已推送要处理的任务

(myprojectenv) root@ubuntu-s-1vcpu-1gb-blr1-01:/etc/myproject# python3 manage.py shell
Python 3.8.10 (default, Mar 15 2022, 12:22:08)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from app1.tasks import add
>>> add.delay(1,2)

celery 窗上

[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

但我在队列中看不到内容

des4xlb0

des4xlb01#

免责声明:我不确定这个方法有多完美-但是,它会起作用的。
*第1步:关闭工作进程(即终止/终止由celery -A myproject worker命令启动的进程)
*第2步:将消息推送到RabbitMQ(只需使用.delay()方法从Django shell调用任务)
*步骤3:检查RabbitMQ管理控制台。
注意:您可以使用/查看/弹出队列中的消息。根据您选择的弹出机制(acknack-(如果我说错了请纠正我)),工作进程将能够在消息处于活动状态时使用这些消息。

相关问题