Я запускаю сельдерей через Redis. Я запускаю свой рабочий так:
celery multi start worker1 -A mypackage.tasks.tasks
celery multi v3.1.18 (Cipater)
> Starting nodes...
> worker1@polyphemus.xxx.net: OK
И убиваю его вот так:
celery multi kill worker1
celery multi v3.1.18 (Cipater)
> worker1@polyphemus.xxx.net: 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)
> worker1@polyphemus.xxx.net: OK
Если я убью процесс, все в порядке:
kill 29369
Но это слишком громоздко: мне нужно знать PID. Как действительно убить рабочего с помощью инструмента командной строки сельдерея?
Невозможно остановить рабочего с помощью celery multi
команда. Вы можете получить PID из файла pid или из вывода ps, например
ps auxww | grep '[c]elery worker' | awk '{print $2}' | xargs kill
или
kill $(cat /path/to/worker.pid)