El proceso supervisor sale con 'estado de salida 1; no esperado'

El proceso supervisor sale con 'estado de salida 1; no esperado'

Estoy intentando ejecutar un proceso gunicorn_django en el supervisor pero siempre sale inmediatamente y aparece este error:

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

El script de mi servidor se ve así:

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

Y mi configuración de supervisor se ve así:

[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

Cuando entro suen la my-www-usercuenta, el servidor se inicia normalmente. Cuando lo hago, sudo supervisorctl start my_appsimplemente se cuelga hasta que hago CTRL-c, luego encuentro el error anterior en el archivo supervisord.log.

¿Alguien tiene idea de lo que me falta?

Respuesta1

Parece que he encontrado la solución. No puedo hacer que el supervisor ejecute el script de mi servidor sin privilegios, my-www-userya que tiene que escribir en archivos de registro, etc., lo que requiere más acceso. Entonces, la solución es ejecutar el servidor como root y dejar que gunicorn_django genere el proceso de trabajo comomy-www-user

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

Respuesta2

Tuve este error al intentar Celeryejecutar ‍ y tuve exactamente el problema opuesto.

Cambié mi usuario de roota www-datay eso lo resolvió.

Respuesta3

En mi caso al tener el mismo error lo depuré hasta que encontré:

el disco estaba llenoy aumenté el espacio en disco para resolver esto.

(error estúpido, solución fácil; tal vez leer esto aquí ayude a alguien a no perder el tiempo)

También vinculando esta pregunta para otras opciones:

información relacionada