Как остановить сельдерейного рабочего?

Как остановить сельдерейного рабочего?

Я запускаю celery через redis. Я запускаю свой worker так:

celery multi start worker1 -A mypackage.tasks.tasks
celery multi v3.1.18 (Cipater)
> Starting nodes...
        > [email protected]: OK

И я убиваю его вот так:

celery multi kill worker1
celery multi v3.1.18 (Cipater)
> [email protected]: DOWN

Но воркер на самом деле все еще работает. Я не могу запустить воркер снова:

celery multi start worker1 -A mypackage.tasks.tasks
celery multi v3.1.18 (Cipater)
> Starting nodes...
ERROR: Pidfile (worker1.pid) already exists.
Seems we're already running? (pid: 29369)
        > [email protected]: OK

Если я убиваю процесс, то все ок:

kill 29369

Но это слишком обременительно: мне нужно знать PID. КакДействительноубить работника с помощью инструмента командной строки celery?

решение1

Нет способа остановить воркера celery multiкомандой. Вы можете получить PID из pid-файла или из вывода ps, например

ps auxww | grep '[c]elery worker' | awk '{print $2}' | xargs kill 

или

kill $(cat /path/to/worker.pid)

Связанный контент