나는 redis를 통해 셀러리를 실행하고 있습니다. 나는 다음과 같이 작업자를 시작합니다.
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를 알아야 합니다. 어떻게정말셀러리 명령줄 도구로 작업자를 죽이시겠습니까?
답변1
명령 으로 작업자를 막을 수 있는 방법은 없습니다 celery multi
. pid 파일이나 ps 출력에서 PID를 얻을 수 있습니다. 예:
ps auxww | grep '[c]elery worker' | awk '{print $2}' | xargs kill
또는
kill $(cat /path/to/worker.pid)