Archivo de configuración del matraz – ‘DEBUG = True’ no hace nada

Tengo una aplicación de flask grande construida dentro de un paquete llamado “MyApp” (exactamente como se muestra aquí: http://flask.pocoo.org/docs/0.12/patterns/packages/ )

De acuerdo con la documentación de Flask, el modo de depuración debe habilitar las siguientes características:

  1. activa el depurador
  2. activa el recargador automático
  3. habilita el modo de depuración en la aplicación Flask.

Al principio ejecuté mi aplicación de matraz con el siguiente comando y todo funcionó bien:

export FLASK_APP=MyApp export FLASK_DEBUG=1 flask run 

Luego leí la forma correcta de configurar un sistema de configuración (incluido el modo de depuración). Así que creé el siguiente archivo config.py:

 class Config(object): DEBUG = False ... class ProductionConfig(Config): ... class DevelopmentConfig(Config): DEVELOPMENT = True DEBUG = True ... CONFIGS = { "development": DevelopmentConfig, "production": ProductionConfig, "default": DevelopmentConfig } 

Y en mi archivo __init__.py de aplicación, escribí:

 app = Flask(__name__) config_name = os.getenv('FLASK_CONFIGURATION', 'default') app.config.from_object(CONFIGS[config_name]) 

Ahora, para ejecutar la aplicación entro un nuevo comando:

 export FLASK_APP=MyApp export FLASK_CONFIGURATION=development flask run 

Desafortunadamente, esta vez el modo de depuración no se activó en absoluto.

Ningún depurador o recargador automático ha sido activado. Lo único que se ha cambiado es que app.debug ahora es igual a True .

No lo entiendo. Parece que DEBUG = TRUE no funciona correctamente.

¿Tienes alguna idea de por qué sucede?

Ejecutar con el depurador es diferente a configurar la configuración DEBUG . Tienes que hacer ambas cosas. Ejecutar el servidor en modo de desarrollo establece la configuración automáticamente. Normalmente, debe confiar en eso en lugar de establecer la configuración directamente.

La “forma correcta de configurar” que leíste es a) otra manera, no la forma “correcta”, yb) solo establece la configuración, no las variables de entorno FLASK_ENV o FLASK_DEBUG , que es lo que controla el modo de depuración del servidor. .

La configuración de la variable de entorno FLASK_ENV=development le dice a flask run que envuelva la aplicación con el depurador y el reloader. ( app.run(debug=True) hace lo mismo pero no puede configurar FLASK_ENV , que solo tiene una var. env. Ahora se prefiere el comando flask run ). app.debug cambia algunos comportamientos internos en la aplicación Flask, como pasar los errores al depurador interactivo que el modo de desarrollo habilitó.