Supervisor-Prozess wird mit „Exit-Status 1; nicht erwartet“ beendet.

Supervisor-Prozess wird mit „Exit-Status 1; nicht erwartet“ beendet.

Ich versuche, einen Gunicorn_Django-Prozess im Supervisor auszuführen, aber er wird immer sofort beendet und gibt diesen Fehler aus:

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

Mein Serverskript sieht folgendermaßen aus:

#!/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

Und meine Supervisor-Konfiguration sieht folgendermaßen aus:

[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

Wenn ich mich suin das my-www-userKonto einlogge, startet der Server normal. Wenn ich sudo supervisorctl start my_appdas tue, bleibt er einfach hängen, bis ich STRG+C drücke. Dann finde ich den obigen Fehler in der Datei supervisord.log.

Hat jemand eine Ahnung, was ich übersehe?

Antwort1

Ich scheine die Lösung gefunden zu haben. Ich kann Supervisor mein Serverskript nicht als unprivilegierten Benutzer ausführen lassen, my-www-userda es in Protokolldateien usw. schreiben muss, was mehr Zugriff erfordert. Die Lösung besteht also darin, den Server als Root auszuführen und gunicorn_django den Arbeitsprozess alsmy-www-user

[program:my_app]
user=root
; rest of config follows

Antwort2

Beim Versuch, ‍ auszuführen, ist dieser Fehler aufgetreten Celery, und ich hatte genau das gegenteilige Problem.

Ich habe meinen Benutzer von rootauf geändert www-dataund damit war das Problem gelöst.

Antwort3

In meinem Fall trat der gleiche Fehler auf und ich habe ihn debuggt, bis ich Folgendes herausfand:

die Festplatte war vollund ich habe den Speicherplatz vergrößert, um das Problem zu lösen.

(dummer Fehler, leicht zu beheben – vielleicht hilft es jemandem, das hier zu lesen und keine Zeit zu verschwenden)

Verlinke diese Frage auch für andere Optionen:

verwandte Informationen