Поскольку Celery documentation заявляет, что уже выполняемая задача не будет отменена вызовом .revoke()
, если не установлено terminate=True
. Но это не рекомендуется, потому что он убьет самого работника, который, возможно, уже запустил другую задачу. Означает ли это, что нет надежного и стабильного способа сделать это?Есть ли способ ненасильственно остановить конкретную задачу работника сельдерея?
EDIT: celery.contrib.abortable
меня не устраивает, потому что, как говорится в документации, он работает только с базами данных.
Это зависит от задачи, которую вы пытаетесь прекратить (сеть, файл, операции с базами данных и т.д.), пожалуйста, обратите внимание на этот пример: http://stackoverflow.com/questions/37039941/celery- python-revoke В моем случае моя основная задача вызывает дочерние процессы, которые не завершаются, если я не отправлю сигнал SIGKILL. – spicyramen
Возможный дубликат [Прекрасная задача сельдерея изящно] (http://stackoverflow.com/questions/16493364/stopping-celery-task-gracefully) – Louis