저는 셀러리를 사용하고 있습니다. 셀러리가 시작될 때 사용자 정의 프로세스를 만들고 있습니다.이 프로세스는 셀러리가 실행될 때마다 실행되어야합니다. 셀러리 작업자는이 프로세스를 자신의 작업에 사용합니다 (세부 사항은 필요하지 않음)."celeryd stop"이 작동하지 않습니다.
나는 명령 줄에서 셀러리를 실행하고 모든 괜찮 :
celery -A celery_jobs.tasks.app worker -B --loglevel=warning
을하지만 셀러리를 디먼 화하는 celeryd
를 사용하는 경우, 그것을 막을 수있는 방법은 없습니다. 명령 celeryd stop
은 셀러리를 중지하려고 시도하지만 끝내지 않습니다.
두 경우 모두 프로세스 트리를 검사 할 때 차이점이 있습니다. 명령 줄에서 실행할 때 부모는 셀러리 프로세스 (샐러리 작업자가 하위 프로세스 인 주 프로세스)입니다. 부모 셀러리 프로세스를 중지 (중지)하면 모든 셀러리 작업자와 사용자 정의 프로세스가 중지됩니다.
그러나celeryd
으로 실행할 때, 내 사용자 지정 프로세스가 부모
/sbin/init
있다 - 그리고
celeryd stop
가 작동하지 않는 전화는 - 그것은 셀러리의 자식 프로세스 아니므로 뭔가를 기다리고 주요 셀러리 과정처럼 보인다, 또는 내 사용자 지정 프로세스를 중지 할 수 없습니다 .
프로세스에 대해 많이 알지 못하고 정보를 찾는 것이 쉽지 않습니다. 검색해야 할 항목을 모르기 때문에 모든 팁을 높이 평가합니다.
나는이 해결책을 더 깨끗하게 생각할 때이 대답을 받아 들였다. – misoK