Est-il possible de mettre à jour dynamiquement un modèle rendu dans Flask, côté serveur?
J'ai actuellement un Flacon serveur web qui extrait des données à partir d'une API JSON à l'aide de la intégré dans les demandes de l'objet.
Par exemple:
def get_data():
response = requests.get("http://myhost/jsonapi")
...
return response
@main.route("/", methods=["GET"])
def index():
return render_template("index.html", response=response)
Le problème ici est que, naturellement, la méthode GET est exécuté qu'une seule fois, la première fois get_data est appelé. Afin d'actualiser les données, je dois m'arrêter et redémarrer le Flacon serveur wsgi. J'ai essayé d'emballage différentes parties du code dans un while True /sommeil boucle, mais cela empêche werkzeug de chargement de la page.
Ce qui est le plus Pythonic façon dynamique d'OBTENIR les données que je veux sans avoir à recharger la page ou de redémarrer le serveur?
source d'informationauteur damienstanton | 2014-10-23
Vous devez vous connecter pour publier un commentaire.
Vous êtes à discuter de ce sont peut-être deux questions différentes.
Supposons le problème est que vous êtes à l'appel de la dynamique de la source de données,
get_data()
une seule fois et garder son (statique) de la valeur dans un monderesponse
. Cet appel n'est pas affichée, mais disons que c'est quelque part dans votre code. Alors, si vous êtes prêt à actualiser la page (/
) pour obtenir les mises à jour, vous pouvez ensuite:Ce serait d'extraire des données à jour à chaque chargement de page.
Puis vers la fin de votre question, vous demandez comment "OBTENIR les données que je veux sans avoir à recharger la page ou de redémarrer le serveur." C'est une tout autre question. Vous devrez utiliser AJAX ou WebSocket requêtes dans votre code. Il existe assez peu de tutoriels sur la façon de le faire (par exemple cette une) que vous pouvez trouver par une recherche sur Google "Flacon AJAX." Mais cela nécessitera un JavaScript appel AJAX. Je recommande de trouver des exemples de la façon dont cela est fait à travers la recherche "Flacon AJAX jQuery" comme jQuery va abstrait et simplifier ce que vous devez faire sur le côté client. Ou, si vous souhaitez utiliser les WebSockets pour de faibles temps de latence de la connexion entre votre page web, il est également possible; la recherche pour les exemples (par exemple,comme celui-ci).