Jestem trochę zdezorientowany, jak zrobić coś, co moim zdaniem byłoby całkiem proste. Mam prostą aplikację napisaną przy użyciu Flask
. Wygląda to mniej więcej tak:Jakie jest właściwe podejście do wywoływania funkcji po uruchomieniu aplikacji z kolbą?
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)
Co mam znalezienia że mój terminal jest wyprowadzanie sprawozdań drukowania w _run_on_start
, ale nie drugiej zwykłej Flask app debugowania kodu. Jeśli usunę połączenie przed app.run, wynik będzie normalny. Ponadto znajduję wyjście _run_on_start
, które należy powtórzyć dwukrotnie przy starcie, chociaż nie wiem, czy jest to jakieś dziwne wyjście, czy też funkcja jest wywoływana dwukrotnie.
Zakładam, że to nie jest właściwy sposób dodawania wywołania funkcji, zanim zadzwonisz pod numer app.run
. Zajrzałem do dokumentacji Flask i znalazłem wzmianki o różnych dekoratorach, z których można korzystać, co pozwala na wykonanie funkcji przed/po pewnych żądaniach, ale chcę wykonać połączenie, gdy uruchomiony jest serwer aplikacji.
Co więcej, zdaję sobie sprawę, że jeśli zadzwonię do tego modułu z innego modułu, tj. Nie wtedy, gdy __name__ != "__main__"
, nie otrzymam mojego połączenia z numerem _run_on_start
.
Jakie jest właściwe podejście? W obu przypadkach, gdy zaczynam od CL i od innego modułu?
Będzie to prawdopodobnie odpowiedź na pytanie: http://stackoverflow.com/questions/27465533/run-code-after-flask-application- has-started? noredirect = 1 & lq = 1 –