감독자는 항상 ‘종료 상태 0’으로 프로세스를 종료합니다. 예상치 못한’ projectx (exit status 0; not expected) 2010-07-23 14:54:42,695

저는 현재 vps를 재 구축 중이며 gunicorn / wsgi django 프로세스를 관리하기 위해 감독자를 사용하고 싶습니다. 즉, 감독자는 프로세스를 계속 종료합니다.

2010-07-23 14:54:40,575 INFO supervisord started with pid 31391
2010-07-23 14:54:41,582 INFO spawned: 'projectx' with pid 31395
2010-07-23 14:54:41,691 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:42,695 INFO spawned: 'projectx' with pid 31401
2010-07-23 14:54:42,801 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:44,806 INFO spawned: 'projectx' with pid 31404
2010-07-23 14:54:44,912 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:47,917 INFO spawned: 'projectx' with pid 31408
2010-07-23 14:54:48,022 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:49,023 INFO gave up: projectx entered FATAL state, too many start retries too quickly

이것은 내가 사용하는 구성입니다.

[program:projectx]
command=/path/to/project/bin/gunicorn_django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
user=myuser
autostart=true
autorestart=true

이미 두 번 확인했으며 gunicorn_django가 올바르게 생성되면 상태 0을 반환합니다.

구성에 exitcodes = 0,2를 명시 적으로 추가하려고 시도했지만 차이가없는 것 같습니다. 프로세스가 올바르게 생성 된 것처럼 보이지만 감독자는 그렇지 않은 것으로 생각합니다.

누구든지 이것을 해결하는 방법에 대한 단서가 있습니까?

고마워, 비요른



답변

gunicorn_django가 자체적으로 디먼을하는 경우, 프로그램 감독자가 관리하도록 설계된 것은 아닙니다. Supervisor는 관리 대상 프로그램이 포 그라운드에서 실행될 것으로 예상하여 종료 여부를 모니터링 할 수 있습니다.

감독자 문서를 참조하십시오 .


답변

좋아, 수수께끼 후 사용자와 관련이 있음을 알았습니다. 자식 프로세스를 특정 사용자로 실행하려고했습니다. 줄을 제거한 후 (아래 구성 참조) 모든 것이 잘 작동합니다.

Gunicorn 구성 :

bind = "127.0.0.1:3305"
workers = 2

감독자 구성 :

[program:projectx]
command=/path/to/project/bin/gunicorn_django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
; set the user here instead of in the gunicorn config.
user=user
autostart=true
autorestart=unexpected
stdout_logfile=/path/to/project/logs/project.log
redirect_stderr=true
exitcodes=1


답변

수퍼바이저에서 http 데몬을 실행하려고 할 때 비슷한 오류가 발생했습니다.

이전 pid 파일을 제거하여 수정했습니다 : httpd_pid


답변