Supervisor no trabaja con Gunicorn + Flask

Estoy tratando de ejecutar Gunicorn desde Supervisor en un sistema Ubuntu 12.04. Gunicorn ejecuta una aplicación Flask (servicio web REST simple probado con el servidor integrado de Flask). He instalado Gunicorn mediante la clonación del repository de GIT, tratando de evitar ‘apt-get install’ porque ejecuta el servidor Gunicorn cuando lo instala. No quiero que se ejecute, solo lo ejecutará Supervisor.

Así que después de instalarlo, si lo bash:

cd /usr/local/bin gunicorn my_app:app -c /path/to/gu_config_file 

Gunicorn trabaja. Entonces lo mato. Tenga en cuenta el archivo de configuración sin extensión, porque con la extensión ‘.py’ no funciona para mí. Así que edito el archivo de configuración de Supervisor como:

 [program:gunicorn] command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup directory=/usr/local/bin/ autostart=true autorestart=true redirect_stderr=True 

Y actualizar los cambios en Supervisor:

 supervisorctl reread # gunicorn: changed supervisorctl update # gunicorn: stopped # gunicorn: updated process group 

Detecta cambios en el archivo y trabaja para el progtwig Gunicorn. Ok, pero luego trato de iniciarlo:

 supervisorctl start gunicorn 

Conseguir un molesto:

 gunicorn: ERROR (abnormal termination) 

Comprobando el registro del supervisor:

 2013-03-08 13:07:22,378 INFO spawned: 'gunicorn' with pid 3355 2013-03-08 13:07:22,916 INFO exited: gunicorn (exit status 3; not expected) 2013-03-08 13:07:23,918 INFO spawned: 'gunicorn' with pid 3361 2013-03-08 13:07:24,492 INFO exited: gunicorn (exit status 3; not expected) 2013-03-08 13:07:26,496 INFO spawned: 'gunicorn' with pid 3367 2013-03-08 13:07:27,078 INFO exited: gunicorn (exit status 3; not expected) 2013-03-08 13:07:30,085 INFO spawned: 'gunicorn' with pid 3373 2013-03-08 13:07:30,628 INFO exited: gunicorn (exit status 3; not expected) 2013-03-08 13:07:31,630 INFO gave up: gunicorn entered FATAL state, too many start retries too quickly 

No sé qué hacer en este momento … ¿Puedes ayudarme? ¡Muchas gracias!

EDITAR: lo siento, me olvidé de decir que he exportado la variable PYTHONPATH como:

 export PYTHONPATH=/usr/local/bin:/usr/local/lib/project 

‘my_app’ está en / usr / local / bin. La ruta lib es necesaria para otros módulos. También he editado el archivo de configuración de Supervisor para indicar la variable de entorno, como:

 environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project/ 

Pero no funcionó.

EDIT 2: como @robertklep sugiere en su comentario, esta es la salida del registro:

 Traceback (most recent call last): File "/tmp/gunicorn/gunicorn/arbiter.py", line 485, in spawn_worker worker.init_process() File "/tmp/gunicorn/gunicorn/workers/base.py", line 100, in init_process self.wsgi = self.app.wsgi() File "/tmp/gunicorn/gunicorn/app/base.py", line 103, in wsgi self.callable = self.load() File "/tmp/gunicorn/gunicorn/app/wsgiapp.py", line 25, in load return util.import_app(self.app_uri) File "/tmp/gunicorn/gunicorn/util.py", line 369, in import_app __import__(module) File "/usr/local/bin/my_app.py", line 4, in  import const ImportError: No module named const 2013-03-08 13:29:35 [3670] [INFO] Worker exiting (pid: 3670) 2013-03-08 13:29:36 [3665] [INFO] Shutting down: Master 2013-03-08 13:29:36 [3665] [INFO] Reason: Worker failed to boot. 

El módulo ‘const’ está en / usr / local / lib / project …

No te veo configurando el entorno en tu archivo de configuración de supervisor:

 [program:gunicorn] environment=PYTHONPATH=/usr/local/bin:/usr/local/lib/project command=/usr/local/bin/gunicorn my_app:app -c /path/to/.gu_setup ... 

Si eso no funciona, intente iniciar gunicorn en el modo de depuración:

 command=/usr/local/bin/gunicorn --debug --log-level debug my_app:app -c /path/to/.gu_setup 

O pasar el camino directamente a gunicorn:

 command=/usr/local/bin/gunicorn --pythonpath /usr/local/bin,/usr/local/lib/project my_app:app -c /path/to/.gu_setup 

EDIT: gunicorn’s –pythonpath no --pythonpath , solo puede pasar un directorio:

 command=/usr/local/bin/gunicorn --pythonpath /usr/local/lib/project my_app:app -c /path/to/.gu_setup 

No es necesario pasar –pythonpath. Si trabajas virtuanenv pones agregar donde está gunicorn. Ejemplo:

 command=/home/virtualenv/bin/gunicorn application:app -c /home/virtualenv/deploy/gunicorn.conf.py 

Y el directorio es cuando el código del matraz es, Ejemplo:

 directory=/home/virtualenv/myapp 

Recuerda que el usuario es root!

 user=root