2012-05-29 15 views
8

Soy nuevo en el desarrollo web en Python y he elegido Flask para iniciar mi aplicación web. Tengo algunos recursos para liberar antes del cierre de la aplicación, pero no pude encontrar dónde poner mi código de limpieza. Flask proporciona algunos decoradores como before_request y teardown_request para registrar las devoluciones de llamada antes y después del proceso de solicitud. ¿Hay algo similar para registrar una devolución de llamada que deba invocarse antes de que se detenga la aplicación? Gracias.¿Dónde pongo el código de limpieza en una aplicación Flask?

+3

¿Qué recursos? –

+0

No conozco ninguna instalación ofrecida por Flask cuando la aplicación se detiene. Sería interesante saber exactamente qué quieres limpiar. Python tiene el módulo 'atexit', que puede ser lo que estás buscando. –

+0

Estoy usando una base de datos neo4j y guardo un grupo de conexiones. Supongo que atexit haría el trabajo. ¿Es el lugar más apropiado para poner mi código de limpieza? –

Respuesta

3

El módulo atexit le permite registrar devoluciones de llamadas de terminación de programas. Sin embargo, no se invocarán las devoluciones de llamada si la aplicación finaliza con una señal. Si necesita manejar esos casos, puede registrar las mismas devoluciones de llamada con el módulo signal (por ejemplo, es posible que desee manejar la señal SIGTERM).

Puede que haya entendido mal qué es exactamente lo que quiere limpiar, pero los recursos como los identificadores de archivos o las conexiones de bases de datos se cerrarán de todos modos al apagar el intérprete, por lo que no debería preocuparse por ellos.

Cuestiones relacionadas