主pipe总是退出进程'退出状态0; 没有预料到'

我目前正在重build我的vps,我想用pipe理员来pipe理我的gunicorn / wsgi django进程。 事情是,主pipe不断退出stream程:

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 

这是我正在使用的configuration:

 [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明确地添加到configuration中,但这似乎也没有任何区别。 看起来这个过程是正确的,但主pipe认为没有。

有没有人有如何解决这个问题的线索?

谢谢,比约恩

如果gunicorn_django正在为自己辩护,那不是那种被devise来pipe理的程序pipe理者。 主pipe期望其监督程序在前台运行,以便监控他们是否已经退出。

请参阅supervisord文档 。

好吧,在我感到困惑之后,我发现这与用户有关。 我试图以某个用户身份运行我的subprocess。 删除线(见我的configuration下面),一切工作正常。

Gunicornconfiguration:

 bind = "127.0.0.1:3305" workers = 2 

主pipeconfiguration:

 [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 

当在supervisor下执行一个http守护进程时,我遇到了类似的错误。

通过删除旧的PID文件:httpd_pid修复