Les demandes ne peuvent pas appeler plusieurs routes dans le même Flacon application
-
21-12-2019 - |
Question
Je ne suis pas en mesure d'utiliser avec succès Python Demandes pour appeler un deuxième itinéraire de la même application à l'aide de Flacon.Je sais que sa meilleure pratique pour appeler la fonction directement, mais j'en ai besoin pour appeler à l'aide de l'URL à l'aide de requêtes.Par exemple:
from flask import Flask
import requests
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!" # This works
@app.route("/myrequest")
def myrequest():
#r = requests.get('http://www.stackoverflow.com', timeout=5).text # This works, but is external
#r = hello() # This works, but need requests to work
r = requests.get('http://127.0.0.1:5000/', timeout=5).text # This does NOT work - requests.exceptions.Timeout
return r
if __name__ == "__main__":
app.run(debug=True, port=5000)
La solution
Votre code suppose que votre application peut gérer plusieurs demandes à la fois:la demande initiale, en plus de la demande qui est générée pendant la première est en cours de traitement.
Si vous exécutez le serveur de développement comme app.run()
, il s'exécute dans un thread unique par défaut;par conséquent, il ne peut gérer qu'une seule demande à la fois.
Utilisation app.run(threaded=True)
pour permettre à plusieurs threads dans le serveur de développement.
Comme de Flacon 1.0 le serveur de développement est enfilé par défaut.