我试图在 Supervisor 中运行 gunicorn_django 进程,但它总是立即退出,并出现以下错误:
INFO exited: my_app (exit status 1; not expected)
INFO received SIGCLD indicating a child quit
INFO gave up: my_app entered FATAL state, too many start retries too quickly
我的服务器脚本如下所示:
#!/bin/bash
set -e
LOGFILE=/var/log/gunicorn/my_app.log
LOGDIR=$(dirname $LOGFILE)
NUM_WORKERS=3
USER=my-www-user
GROUP=my-www-user
cd /home/my-www-user/my_app
source /home/my-www-user/.virtualenvs/my_app/bin/activate
test -d $LOGDIR || mkdir -p $LOGDIR
gunicorn_django -w $NUM_WORKERS --debug \
--user=$USER --group=$GROUP \
--log-level=debug --log-file=$LOGFILE 2>>$LOGFILE\
--pythonpath=my_app --settings=settings.active \
my_app.wsgi:application
我的主管配置如下:
[program:my_app]
directory=/home/my-www-user/my_app/
user=my-www-user
command=/home/my-www-user/my_app/server.sh
stdout_logfile=/var/log/supervisor/my_app.log
stderr_logfile=/var/log/supervisor/my_app-error.log
autostart=true
autorestart=true
当我su
进入my-www-user
帐户时,服务器正常启动。当我这样做时,sudo supervisorctl start my_app
它只是挂起,直到我按 CTRL-c,然后我在supervisord.log文件中发现上述错误。
有人知道我错过了什么吗?
答案1
我似乎找到了解决方案。我不能让主管以非特权身份运行我的服务器脚本,my-www-user
因为它必须写入日志文件等,这需要更多访问权限。因此,解决方案是以 root 身份运行服务器,并让 gunicorn_django 生成工作进程my-www-user
[program:my_app]
user=root
; rest of config follows
答案2
我在尝试运行时遇到此错误Celery
,而且我遇到了完全相反的问题。
我将我的用户从 改为root
,www-data
问题就解决了。
答案3
就我而言,遇到了同样的错误,我对其进行了调试,直到发现:
磁盘已满我增加了磁盘空间来解决这个问题。
(愚蠢的错误,很容易修复 - 也许阅读这篇文章可以帮助某些人不浪费时间)
还将这个问题链接到其他选项: