Сельдерей проверяет, выполняется ли очередь

Я должен запускать задачи сельдерея, которые должны иметь некоторое пространство имен (например, идентификатор пользователя). Поэтому я создаю его

scrapper_start.apply_async((request.user.id,), queue=account.Account_username)
app.control.add_consumer(account.Account_username, reply=True)

И задачи рекурсивно рекрутируются, из другой задачи. Теперь я должен проверить, выполняются ли задачи очереди. Пробовал проверять длину списка в redis, он возвращает истинное число перед запуском сельдерея. Как решить эту проблему. Мне нужно только проверить, выполняется ли очередь или потребитель или уже пуст. благодаря

1 ответ

Если вы просто хотите проверить очередь, вы делаете это из командной строки.

from celery.task.control import inspect
 i = inspect('scrapper_start')
 i.active() # get a list of active tasks

В дополнение к проверке, выполняемой в настоящее время, вы также можете сделать следующее.

i.registered() # get a list of tasks registered
 i.scheduled # get a list of tasks waiting
 i.reserved() #tasks that has been received, but waiting to be executed

Эта проверка командной строки хороша, если вы хотите проверять время от времени.

По какой-то причине, если вы хотите постоянно следить за ними, вы можете использовать Flower, который обеспечивает прекрасный интерфейс для наблюдения за рабочими.

licensed under cc by-sa 3.0 with attribution.