Attualmente dispongo di un server Web Flask che estrae i dati da un'API JSON utilizzando l'oggetto di richieste incorporato.È possibile aggiornare dinamicamente un modello renderizzato in Flask, lato server?
Ad esempio:
def get_data():
response = requests.get("http://myhost/jsonapi")
...
return response
@main.route("/", methods=["GET"])
def index():
return render_template("index.html", response=response)
Il problema qui è che, naturalmente, il metodo GET viene eseguito solo una volta, la prima volta get_data si chiama. Per aggiornare i dati, devo interrompere e riavviare il server wsgi Flask. Ho provato a racchiudere varie parti del codice in un ciclo True/sleep while, ma questo impedisce a werkzeug di caricare la pagina.
Qual è il modo più Python per ottenere in modo dinamico i dati desiderati senza dover ricaricare la pagina o riavviare il server?
Se siete disposti a instradare il vostro get_data metodo '() a un URL, si potrebbe utilizzare [AJAX] (http://api.jquery.com/jquery.ajax/) chiamarlo dal client e aggiornare la pagina con i risultati. – Celeo
@Celeo è a senso unico. Ma diciamo che ho 'get_data()' in un file separato e non voglio aggiungere un altro percorso? La mia domanda riguarda se questo può essere ottenuto usando l'estensione Flask o Flask. – damienstanton
Dovrai avere un modo per il client di ottenere dati dal server dopo che il server ha già reso il modello. Se desideri semplicemente che i dati vengano aggiornati in background senza interazione con il client, puoi provare con [Celery] (http://www.celeryproject.org/). – Celeo