deploy python nginx flask uwsgi

python - deploy - El rastreo de la aplicación del Flask no aparece en el registro del servidor



flask deploy (2)

Como la respuesta OP que configura el indicador de depuración en el código puede resolver el problema temporalmente, pero trate de mantener el código como la lectura de la variable de depuración del entorno. Puede hacer uso de proyectos como este .

from envparse import env app.debug = env(''DEBUG'', cast=bool)

Al usar esta forma, puede cambiar fácilmente el modo de depuración del entorno. Luego use la configuración del administrador de procesos para establecer las variables de entorno.

Upstart (predeterminado en Ubuntu 14.04)

# /etc/init/uwsgiapp.conf env DEBUG=true script // upstart exec section end script

Systemd (predeterminado en Ubuntu 16.04, Arch)

[Service] Environment="DEBUG=true" # other parts

Si está utilizando el mecanismo de gestión de procesos integrado del sistema operativo, puede encontrar la sección de registros / var / log

Supervisord

[program:flask] environment=DEBUG=true

Estoy ejecutando mi aplicación Flask con uWSGI y nginx. Hay un error de 500, pero el rastreo no aparece en el navegador ni en los registros. ¿Cómo registro el rastreo de Flask?

uwsgi --http-socket 127.0.0.1:9000 --wsgi-file /var/webapps/magicws/service.py --module service:app --uid www-data --gid www-data --logto /var/log/magicws/magicapp.log

El registro uWSGI solo muestra el código de estado 500, no el rastreo. Tampoco hay nada en el registro nginx.

[pid: 18343|app: 0|req: 1/1] 127.0.0.1 () {34 vars in 642 bytes} [Tue Sep 22 15:50:52 2015] GET /getinfo?color=White => generated 291 bytes in 64 msecs (HTTP/1.0 500) 2 headers in 84 bytes (1 switches on core 0)


Ejecutar en modo de depuración agregando esta línea antes de que se app.run

app.debug = True

o corriendo con

app.run(debug=True)

Ahora debe aparecer un rastro de pila en el terminal y el navegador en lugar de una página de error 500 genérica.

Al usar el nuevo comando de flask para ejecutar el servidor, configure la variable de entorno FLASK_DEBUG .

FLASK_DEBUG=1 flask run

En producción, no desea ejecutar su aplicación en modo de depuración. En su lugar, debe registrar los errores en un archivo.

Flask utiliza la biblioteca de registro de Python estándar que se puede configurar para registrar errores. Inserta lo siguiente para enviar los mensajes de registro de Flask a un archivo.

import logging handler = logging.FileHandler(''/path/to/app.log'') # errors logged to this file handler.setLevel(logging.ERROR) # only log errors and above app.logger.addHandler(handler) # attach the handler to the app''s logger

Lea más sobre el módulo de registro de Python. En particular, es posible que desee cambiar el controlador de archivos a un RotatingFileHandler para garantizar que los archivos de registro no crezcan demasiado. Es posible que también desee cambiar el nivel de registro para registrar más que solo errores.

Flask también tiene instrucciones sobre cómo registrar su aplicación.