Как изящно перезапустить celery worker, чтобы не влиять на работающие агенты?

Я запускаю celery worker в качестве демона systemd, который обслуживает множество долго работающих агентов.

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

  • Перезапуск агентов для меня неприемлемое решение.
  • Я бы также избегал использования тайм-аутов задач

Есть ли способ изящно перезапустить работника, чтобы не влиять на уже запущенные агенты?

Все агенты являются python скриптами.


person Maksym Polshcha    schedule 26.01.2018    source источник
comment
может быть дубликатом stackoverflow. com/questions/9764913/, в частности ответ об остановке воркеров сигналом HUP   -  person Jason    schedule 26.01.2018
comment
@Jason Именно так я перезапускаю рабочих.   -  person Maksym Polshcha    schedule 26.01.2018
comment
через ps auxww | grep celeryd | grep -v "grep" | awk '{print $2}' | xargs kill -HUP? По-видимому, ваше желание не все, что можно сделать в сельдерее.   -  person Jason    schedule 26.01.2018
comment
@ Джейсон Нет, я использую celery multi restart|stopwait. Почему вы говорите, что это невозможно?   -  person Maksym Polshcha    schedule 26.01.2018