RabbitMQ : Как проверить содержимое очереди при обработке задачи с помощью celery?

Я установил базовую очередь сообщений и задач, используя RabbitMQ и Celery в моем Django приложении. Согласно моему пониманию, когда я использую метод задержки, это толкает мои задачи в очередь rabbitMQ и один из моих рабочих из моего приложения Celery получает то же самое из очереди для выполнения. Есть ли способ, с помощью которого, когда я отправляю задачу в очередь с помощью задержки, я могу просмотреть ее на портале управления очередью сообщений RabbitMQ? Поскольку задачи почти мгновенно извлекаются и обрабатываются, нет возможности просмотреть их на портале.

Вот что я попробовал, что, как мне кажется, неправильно, добавив таймер сна в метод моей задачи.

sudo nano 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)

На окне сельдерей

[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

Но я не вижу содержимого в своей очереди

enter image description here

Отказ от ответственности: Я не уверен, насколько совершенен этот способ - Но, он сделает свою работу.


  • Шаг 1: Выключить рабочего (то есть убить/прервать процесс, инициированный командой celery -A myproject worker)
  • Шаг 2: Передача сообщений в RabbitMQ (Просто вызовите задачу из оболочки Django с помощью метода .delay())
  • .
  • Шаг 3: Проверьте консоль управления RabbitMQ.
  • .

Примечание: Вы можете потреблять/просматривать/открывать сообщения из очереди. В зависимости от выбранного вами механизма pop (ack или nack - (поправьте меня, если я ошибаюсь)), рабочий сможет потреблять сообщения, как только он начнет работать.

Вернуться на верх