Mein Ziel ist es, willkürlichen Code zu erhalten, nachdem die Flaschenapplikation gestartet wurde. Hier ist mein Problem. Ich habe dies bekam (wo app meine Kolben-App ist):Code ausführen, nachdem die Flaschenanwendung gestartet wurde
def run():
from webapp import app
app.run(debug=True, use_reloader=False)
ich im Idealfall würde ich tun, nur diese
def run():
from webapp import app
app.run(debug=True, use_reloader=False)
some_code()
aber der Code wird nicht fortgesetzt Vergangenheit app.run(), bis die Server beendet, so some_code() läuft nie
die Lösung ich arbeite im Moment an ist some_code() in einem separaten Thread von app.run() auszuführen, erstellen Sie eine before first request Funktion, die diese Sätze:
app.is_running = True
Holen Sie sich dann some_code(), um eine Basisanforderung an die App zu senden, damit der Code "vor der ersten Anfrage" ausgeführt wird. Das ist ziemlich kompliziert und es wird schwer sein, Dokumente für ... zu schreiben. Ich würde lieber auf einen app.is_running-Parameter verweisen, der bereits in flask geschrieben ist, oder einen @ app.after_server_start-Dekorator verwenden, aber meines Wissens gibt es keines davon:/
Helfen Sie mir, diesen Code besser zu machen?
Posthumus: jedes Mal wenn ich über diese Frage nachdenkt, macht es mich für ein Flask-Script@app.after_server_start decorator
Warum nicht einfach '@ app.before_first_request' verwenden und * damit erledigt werden *. Warum muss der Code früher ausgeführt werden? –
Mit anderen Worten, warum ist es so wichtig, dass der Code * nach dem Start des Servers * läuft (den Sie im Produktionscode sowieso nicht verwenden können, verwenden Sie stattdessen immer einen richtigen WSGI-Container und nicht den fadenscheinigen für die Entwicklung) nur Werkzeug Server startete mit 'app.run()') aber bevor eine Anfrage einging? –
Vor allem, weil es sinnvoller ist, den Code nach dem Serverstart auszuführen, aber Ihr Recht, dass es nicht so früh ausgeführt werden muss – Cyrin