Usando el módulo de peticiones en la función de ruta de matraz

Considere la siguiente aplicación de matraz de trabajo mínimo:

from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "I am /" @app.route("/api") def api(): return "I am /api" if __name__ == "__main__": app.run() 

Esto funciona felizmente. Pero cuando bash realizar una solicitud GET con el módulo de “solicitudes” de la ruta de hello a la ruta api , nunca obtengo una respuesta en el navegador cuando bash acceder a http://127.0.0.1:5000/

 from flask import Flask import requests app = Flask(__name__) @app.route("/") def hello(): r = requests.get("http://127.0.0.1:5000/api") return "I am /" # This never happens :( @app.route("/api") def api(): return "I am /api" if __name__ == "__main__": app.run() 

Así que mis preguntas son: ¿Por qué sucede esto y cómo puedo solucionarlo?

Está ejecutando su aplicación WSGI con el servidor de prueba Flask, que de manera predeterminada usa un solo hilo para manejar las solicitudes. Entonces, cuando el subproceso de una solicitud intenta volver a llamar al mismo servidor, todavía está ocupado tratando de manejar esa única solicitud .

Tendrás que habilitar el enhebrado:

 if __name__ == "__main__": app.run(threaded=True) 

o use un servidor WSGI más avanzado; ver Opciones de implementación .