Contexto: Estoy escribiendo una aplicación de matraz de tamaño mediano (10-15 visitas), y en el proceso, espero organizar el código de una manera que lo haga fácil de mantener y extensible (no es un archivo monolítico como la mayoría de las aplicaciones de Flask).Procfile gunicorn nombre de módulo personalizado
La estructura de los imita la aplicación documentation de la siguiente manera:
/AwesomeHackings
/ENV
/AwesomeHackings
/models
/static
/templates
/__init__.py
/awesome.py
/awesome.cfg
/Procfile
/README.MD
/requirements.txt
/run.py
Problema: Soy incapaz de conseguir capataz de trabajar con una aplicación frasco que no se llama 'app'. Me encantaría tener run.py ser el punto de entrada a mi aplicación.
estoy usando gunicorn + GEvent, y mi actual Procfile contiene:
web: gunicorn -w 2 -b 0.0.0.0:$PORT -k gevent app:run
He estado usando run.py
para probar la aplicación:
from AwesomeHackings import awesome
awesome.app.run(debug=True)
lo tanto asumí que simplemente podría sustituir run
de app
en el archivo de proceso, pero al ejecutar foreman start
, gunicornio falla con verborrea sin sentido sobre los módulos.
Tengo una configuración muy similar y aunque entiendo por qué se ejecutará: aplicación, todavía no funciona en mi extremo. ¿Qué hay en tu archivo awesome.py, exactamente? – Caroline
En este caso, awesome.py contiene la definición del objeto de la aplicación (y, cuando escribí aplicaciones sencillas de matraz monolítico, todas las vistas, etc.). Desde el directorio en el que ejecuta gunicorn, ¿cómo importaría el objeto 'app'? ES DECIR. de la aplicación foo import. Ese módulo, combinación de nombre de variable es lo que necesita pasar a gunicornio. ¿Puede proporcionar más información y detalles sobre su configuración? Feliz de ayudar a través del correo electrónico (Mi nombre de usuario @ gmail.com) –
Para referencia futura de cualquier otra persona. Arreglé mi problema y explico cómo en http://stackoverflow.com/questions/22921187/flask-and-gunicorn-multiple-modules-circular-imports-not-all-routes-accessib. – Caroline