Назад | Перейти на главную страницу

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

Я запускаю сельдерей через 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)