我目前正在重建我的 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
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的配置:
[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
Run Code Online (Sandbox Code Playgroud)
我已经仔细检查过,并且 gunicorn_django 在正确生成时确实返回状态 0。
我尝试将 exitcodes=0,2 显式添加到配置中,但这似乎也没有什么区别。看起来进程正确生成,但主管认为它没有。
小智 14
如果 gunicorn_django 自我守护,它不是那种旨在管理的程序主管。Supervisor 期望其受监督的程序在前台运行,以便它可以监视它们是否已退出。
请参阅supervisord 文档。
好吧,经过一番困惑,我发现这与用户有关。我尝试以特定用户身份运行我的子进程。删除该行后(请参阅下面的我的配置),一切正常。
古尼康配置:
bind = "127.0.0.1:3305"
workers = 2
Run Code Online (Sandbox Code Playgroud)
主管配置:
[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
Run Code Online (Sandbox Code Playgroud)