Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Requests not able call multiple routes in same Flask application

I am not able to successfully use Python Requests to call a second route in the same application using Flask. I know that its best practice to call the function directly, but I need it to call using the URL using requests. For example:

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)
like image 958
mediastream Avatar asked Jun 03 '14 19:06

mediastream


1 Answers

Your code assumes that your app can handle multiple requests at once: the initial request, plus the request that is generated while the initial is being handled.

If you are running the development server like app.run(), it runs in a single thread by default; therefore, it can only handle one request at a time.

Use app.run(threaded=True) to enable multiple threads in the development server.


As of Flask 1.0 the development server is threaded by default.

like image 150
davidism Avatar answered Oct 14 '22 00:10

davidism