Il mio obiettivo è ottenere codice arbitrario da eseguire dopo l'avvio dell'applicazione del flask, ecco il mio problema. Ho questo (in cui applicazione è il mio pallone app):Il codice di esecuzione dopo l'applicazione del pallone è stato avviato
def run():
from webapp import app
app.run(debug=True, use_reloader=False)
ho idealmente vorrei solo fare questo
def run():
from webapp import app
app.run(debug=True, use_reloader=False)
some_code()
ma il codice non continua app.run passato() fino a quando la uscite server, in modo some_code() non corre
la soluzione su cui sto lavorando in questo momento è quello di eseguire some_code() in un thread separato da app.run(), creare una funzione che imposta before first request questo:
app.is_running = True
Quindi ottenere some_code() per eseguire una richiesta di base per l'app in modo che venga eseguito il codice "prima della prima richiesta". Questo è abbastanza complicato e sarà difficile scrivere documenti per ... Vorrei piuttosto fare riferimento a un parametro app.is_running già scritto nella beuta, o usare un decoratore @ app.after_server_start, ma a mia conoscenza nessuno dei due esiste:/
Aiutami a migliorare questo codice?
postale humus: ogni volta che penso a questa domanda, mi fa venire voglia di @app.after_server_start decorator
Perché non usare semplicemente '@ app.before_first_request' e * con *. Perché il codice deve essere eseguito prima? –
In altre parole, perché è così importante che il codice venga eseguito * dopo * all'avvio del server (che non è comunque possibile utilizzare in questo modo nel codice di produzione, utilizzare sempre un contenitore WSGI appropriato e non il fragile-per-sviluppo- solo il server Werkzeug è stato avviato con 'app.run()') ma prima che una richiesta sia arrivata? –
Principalmente perché ha più senso eseguire il codice dopo l'avvio del server, ma è giusto che non sia necessario eseguirlo così presto – Cyrin