¿Cuál es el enfoque correcto para llamar a funciones después de ejecutar una aplicación de matraz?

Estoy un poco confundido acerca de cómo hacer algo que pensé que sería bastante simple. Tengo una aplicación simple escrita usandoFlask. Se parece a esto:

from flask import Flask

app = Flask(__name__)

def _run_on_start(a_string):
    print "doing something important with %s" % a_string

@app.route('/')
def root():
    return 'hello world'

if __name__ == "__main__":
    if len(sys.argv) < 2:
        raise Exception("Must provide domain for application execution.")
    else:
        DOM = sys.argv[1]
        _run_on_start("%s" % DOM)
        app.run(debug=True)

Lo que encuentro es que mi terminal está emitiendo las declaraciones de impresión en_run_on_start pero no del otro código de depuración habitual de la aplicación Flask. Si elimino la llamada antes de app.run, la salida es normal. Además, estoy encontrando la salida de_run_on_start se repetirá dos veces al inicio, aunque no sé si es una salida extraña o si la función se llama dos veces.

Supongo que esta no es la forma correcta de agregar una llamada de función antes de llamar aapp.run. Miré en los documentos de Flask y encontré menciones de varios decoradores que uno puede usar, que le permiten ejecutar una función antes / después de ciertas solicitudes, pero quiero ejecutar la llamada cuando se ejecuta el servidor de aplicaciones.

Además, me doy cuenta de que si llamo a este módulo desde otro módulo, es decir, no cuando__name__ != "__main__" mi no recibiré mi llamada a_run_on_start.

¿Cuál es el enfoque correcto aquí? ¿En ambos casos cuando empiezo desde el CL y desde otro módulo?

Respuestas a la pregunta(6)

Su respuesta a la pregunta