Задания остаются в сельдерее amqp, когда издатель прекращается - PullRequest
8 голосов
/ 19 сентября 2019

Я использую Celery с сервером RabbitMQ.У меня есть издатель, который потенциально может быть прерван на SIGKILL, и так как этот сигнал не может быть просмотрен, я не могу отозвать задачи.Каков был бы общий подход для отмены задач, когда издатель больше не жив?знать, как я могу обнаружить тайм-аут

Ответы [ 3 ]

6 голосов
/ 22 сентября 2019

Нет ничего встроенного в сельдерее для мониторинга статуса производителя / издателя - только статус работника / потребителя.Есть и другие альтернативы, которые вы можете рассмотреть, например, с помощью ключа с истекающим сроком действия, который должен периодически обновляться издателем, который может служить прокси-сервером для определения того, жив ли издатель.А затем в проверке задачи, чтобы увидеть, существует ли флаг для издателя в Redis, и если нет, задача вернется, ничего не делая.

4 голосов
/ 26 сентября 2019

Другое решение, которое работает в моем случае, заключается в добавлении следующей задачи, только если текущие обработанные задачи завершены.В этом случае очередь не заполняется.

4 голосов
/ 23 сентября 2019

Я почти уверен, что то, что вы хотите, невозможно с Celery, поэтому я предлагаю вам изменить свою логику и переработать все, чтобы стать частью рабочего процесса Celery (или несколько холстов Celery зависит от фактическогоиспользовать регистр).Мой опыт работы с Celery заключается в том, что вы можете создать буквально любой рабочий процесс, который можете себе представить, с помощью этих примитивов Celery и / или пользовательских сигнатур Celery.

...