Я использую Celery с бэкэндом RabbitMQ.
Каким-то образом я оказался с тем, что кажется зомби-сельдереем.Я вижу работника в Flower и таких командах, как celery inspect scheduled
.Но он ссылается на PID, который не существует.Там нет рабочего процесса.Это большая проблема, потому что Celery будет делегировать задачи этому работнику, и они никогда не будут выполнены.
Я полагаю, что произошло то, что док-контейнер, внутри которого он выполняется, отключился из-за нечистоты.Но теперь, даже если я перезапущу докер-контейнер, этот зомби-работник всегда возвращается.Всегда имеет одно и то же имя: celery@0357c65d991b
.
В документах Celery сказано, что для того, чтобы убить рабочего, вы должны отправить его процесс TERM
.Но я не могу этого сделать, потому что нет процесса.Это зомби.
RabbitMQ должен иметь висячую ссылку на этого работника.Единственное, что я смог найти в интерфейсе управления RabbitMQ - это очередь с именем celery@0357c65d991b.celery.pidbox
.Я удалил эту очередь, но она появилась снова несколько секунд спустя.
Может кто-нибудь дать мне указатель на то, где искать, чтобы избавиться от этой вещи?