Как я могу удалить все отложенные задачи, не зная task_id
для каждой задачи?
task
rabbitmq
celery
celery-task
nabizan
источник
источник
manage.py celery purge
(celeryctl
теперь устарела и пропадет в 3.1).redis-cli KEYS "celery*" | xargs redis-cli DEL
который работал для меня. Это уничтожит все задачи, хранящиеся в бэкэнде Redis, который вы используете.celery purge
(внутри соответствующей виртуальной среды). Упс - есть ответ с тем же ниже ..... stackoverflow.com/a/20404976/1213425-A
является приложение Django, в которомcelery.py
находится.Для сельдерея 3.0+:
Чтобы очистить определенную очередь:
источник
celery -A proj purge
.Для сельдерея 2.x и 3.x:
Например, при использовании работника с параметром -Q для определения очередей
тогда
celery purge
не будет работать, потому что вы не можете передать ей параметры очереди. Будет удалена только очередь по умолчанию. Решение состоит в том, чтобы запустить ваших работников с--purge
параметром, подобным этому:Это, однако, запустить работника.
Другой вариант - использовать подкоманду ceq amqp
источник
В сельдерее 3+:
CLI:
Programatically:
http://docs.celeryproject.org/en/latest/faq.html#how-do-i-purge-all-waiting-tasks
источник
Я обнаружил, что
celery purge
это не работает для моей более сложной конфигурации сельдерея. Я использую несколько именованных очередей для разных целей:Первый столбец - это имя очереди, второй - количество сообщений, ожидающих в очереди, а третий - количество прослушивателей этой очереди. Очереди:
Задача аналитики - это грубые задачи, которые отлично работали с небольшими наборами данных, но теперь для их обработки требуется более 24 часов. Иногда, что-то идет не так, и он застревает в ожидании в базе данных. Его нужно переписать, но до тех пор, пока он не застрянет, я убиваю задачу, очищаю очередь и пытаюсь снова. Я обнаружил «застревание», просматривая количество сообщений для очереди аналитики, которое должно быть 0 (законченная аналитика) или 1 (ожидание завершения аналитики прошлой ночью). 2 или выше - плохо, и я получаю электронное письмо.
celery purge
предлагает стереть задачи из одной из широковещательных очередей, и я не вижу возможности выбрать другую именованную очередь.Вот мой процесс:
источник
celeryctl purge
не работал с именованными очередями.python manage.py celery amqp queue.purge <queue_name>
сделал. Я думаю, что контекст полезен для людей со сложными настройками, поэтому они могут выяснить, что им нужно делать, еслиceleryctl purge
у них не получается.manage.py
в своем Celery 3.1.17, файл был удален или просто новый? Однако я нашел то, что выглядит как соответствующий интерфейс (queue.purge
)*/bin/amqp.py
. Но после попытки соотнести содержимое файла с документацией, я должен с сожалением признать, что Celery совершенно не документирован, а также является очень запутанным произведением, по крайней мере, судя по его исходному коду.manage.py
скрипт управления Django,manage.py celery
запускающий сельдерей после загрузки конфигурации из настроек Django Я не использовал сельдерей за пределами Django, но включеннаяcelery
команда может быть тем, что вы ищете: celery.readthedocs.org/en/latest/userguide/monitoring.htmlВ сельдерее 3+
http://docs.celeryproject.org/en/3.1/faq.html#how-do-i-purge-all-waiting-tasks
CLI
Очистить именованную очередь:
Очистить настроенную очередь
Поэтому для очистки всей очереди работники должны быть остановлены.
источник
Если вы хотите удалить все отложенные задачи, а также активные и зарезервированные задачи, чтобы полностью остановить Celery, это то, что сработало для меня:
источник
1. Чтобы правильно очистить очередь ожидающих заданий, вы должны остановить всех рабочих ( http://celery.readthedocs.io/en/latest/faq.html#i-ve-purged-messages-but-there-are- неподвижные сообщения, оставленные в очереди ):
или (если RabbitMQ / брокер сообщений управляется супервизором):
2. ... и затем удалите задачи из определенной очереди:
3. Запустите RabbitMQ:
или (в случае, если RabbitMQ управляется Supervisor):
источник
celery 4+ команда celery purge для очистки всех настроенных очередей задач
программно:
все отложенные задачи будут удалены. Ссылка: celerydoc
источник