Donde en matraz / gunicorn para inicializar la aplicación

Estoy usando Flask / Gunicorn para ejecutar una aplicación web y tengo una pregunta sobre la administración del ciclo de vida. Tengo más experiencia en el mundo Java con servlets.

Estoy creando una interfaz de descanso para un servicio. El servicio siempre se ejecuta en el servidor y se comunica y controla con un conjunto de sub-servidores. En Java, mi servicio se crearía e inicializaría (por ejemplo, la configuración tradicionalmente encontrada en main() ) a través de escuchas y métodos de inicialización de servlets.

¿Dónde estaría la configuración y configuración equivalentes en Flask? Estoy pensando en tareas como crear un grupo de conexión de base de datos, enviar mensajes de saludo a los subervidores, restablecer el estado del sistema a los valores iniciales, etc.

¿ before_first_request iría en el método before_first_request de Flask?

Basado en los comentarios de @Pyrce, creo que podría crear un main.py :

 app = Flask(your_app_name) #initialization code goes here 

y luego correr con:

>gunicorn main:app

Todavía puedes usar el mismo paradigma del método main (). Vea este código de inicio a continuación:

 app = Flask(your_app_name) # Needs defining at file global scope for thread-local sharing def setup_app(app): # All your initialization code setup_app(app) if __name__ == '__main__': app.run(host=my_dev_host, port=my_dev_port, etc='...') 

El método before_first_request también podría manejar todos esos elementos. Pero tendrá la demora de la configuración en la primera solicitud en lugar del inicio del servidor.