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.