Supervisord

主管總是以“退出狀態 0”退出程序;沒想到'

  • June 3, 2021

我目前正在重建我的 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 希望其受監督的程序在前台執行,以便監控它們是否已退出。

請參閱主管文件

引用自:https://serverfault.com/questions/163392