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