Управление и запрос заданий в сельдерее - PullRequest
0 голосов
/ 12 января 2019

Я играю / работаю с Celery уже довольно давно, и как инструмент «Пожалуйста, запустите эту задачу и повторите ее несколько раз, если она не удалась, пришлите мне электронное письмо, если не получится более 10 раз», это довольно классно. Это именно так.

Проблема в том, что у меня возникла проблема, которая требует от меня возможности выполнять несколько групп задач, приостанавливать / возобновлять их и останавливать их.

Я знаю, что у Celery есть очереди и что я могу звонить add_consumer и cancel_consumer, но я заметил, что даже если я отменю потребителя, работник все равно будет запускать все задачи, которые мы уже предварительно выбрали. Это означает, что нет способа выдать команду Pause *NOW*. Существует только Pause sometime later, when you're done doing stuff.

Обходной путь для этого состоит в том, чтобы разработать сами задачи, чтобы проверить, должны ли они на самом деле выполняться или спать.

Но тогда возникает другая проблема: ¿Сколько у меня задач на самом деле? Celery предоставит примитивный способ запросов для активных и запланированных задач, но я заметил, что задачи, которые находятся в состоянии RETRY, не находятся ни в активном, ни в списке запланированных, что означает, что запрос общего количества задач с Celery подвержен ошибкам

Обходной путь для этого состоит в том, чтобы использовать Redis (или любую другую базу данных) и сохранять состояние каждой задачи; затем запросите базу данных напрямую, а не к Celery.

Что я пытаюсь сказать, так это то, что Селери, насколько мне известно, фактически не допускает какого-либо мелкозернистого контроля. Это просто запустить задачи вслепую.

Нет ли чего-нибудь, что позволило бы мне лучше контролировать Сельери? Что-то, что позволило бы мне приостановить / возобновить / остановить целые очереди задач и, возможно, показать мне некоторые статистические данные (how many tasks in total in this queue?, how many active in this queue?, how many in retry state in this queue? и т. Д.) *

Просто к вашему сведению: Да, я знаю, что такое Цветок. Нет, Flower не предоставляет ничего из того, что я прошу. Flower не будет отображать задачи в очереди и не позволит мне мгновенно приостановить выполнение определенной очереди. В лучшем случае это позволит мне отменить потребителя, который, как я уже сказал, прекратит выполнение задач после выполнения предварительно выбранных задач.

1 Ответ

0 голосов
/ 21 января 2019

Насколько я знаю, Celery не дает вам возможности приостанавливать / возобновлять и останавливать задачи из коробки.

Я думаю, что лучше сначала проверить, должна ли задача выполняться перед кодом задачи. И хранить эту информацию в Redis.

Управление способностями сельдерея

Вы можете посмотреть на:

...