Supervisord
主管總是以“退出狀態 0”退出程序;沒想到'
我目前正在重建我的 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 顯式添加到配置中,但這似乎也沒有什麼不同。看起來該程序已正確生成,但主管認為它沒有。
好吧,經過一番困惑後,我發現它與使用者有關。我試圖以某個使用者身份執行我的子程序。刪除該行後(請參閱下面的配置),一切正常。
獨角獸配置:
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
如果 gunicorn_django 自身是守護程序,那麼它不是設計用來管理的那種程序主管。Supervisor 希望其受監督的程序在前台執行,以便監控它們是否已退出。
請參閱主管文件。