¿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?