Sono un po 'confuso su come fare qualcosa che pensavo sarebbe stato abbastanza semplice. Ho una semplice app scritta con Flask
. Sembra qualcosa di simile:Qual è l'approccio giusto per chiamare le funzioni dopo l'esecuzione di un'app pallone?
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)
Quello che sto trovando è che il mio terminale è l'output delle istruzioni di stampa in _run_on_start
ma non dell'altro solita Flask applicazione codice di debug. Se rimuovo la chiamata prima di app.run, l'output è normale. Inoltre sto trovando l'uscita di _run_on_start
da ripetere due volte all'avvio, anche se non so se si tratta di un output strano o la funzione viene effettivamente chiamata due volte.
Suppongo che questo non sia il modo giusto per aggiungere una chiamata di funzione prima di chiamare app.run
. Ho esaminato i documenti di Flask e ho trovato menzioni di vari decoratori che è possibile utilizzare, che consentono di eseguire una funzione prima/dopo determinate richieste, ma voglio eseguire la chiamata quando viene eseguito il server dell'app.
Inoltre, mi rendo conto che se io chiamo questo modulo da un altro modulo, cioè, non quando __name__ != "__main__"
mio non riceverò la mia chiamata a _run_on_start
.
Qual è l'approccio giusto qui? In entrambi i casi quando sto iniziando dal CL e da un altro modulo?
Questo sarà probabilmente rispondere alla domanda: http://stackoverflow.com/questions/27465533/run-code-after-flask-application- has-started? noredirect = 1 & lq = 1 –