请求无法在同一Flask应用程序中调用多个路由

med*_*eam 8 python flask python-requests

我无法使用Flask成功使用Python请求在同一个应用程序中调用第二个路由.我知道直接调用函数的最佳做法,但我需要使用请求使用URL调用它.例如:

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)
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 10

您的代码假定您的应用程序可以同时处理多个请求:初始请求以及处理初始化时生成的请求.

如果您正在运行开发服务器app.run(),则默认情况下它在单个线程中运行; 因此,它一次只能处理一个请求.

用于app.run(threaded=True)在开发服务器中启用多个线程.


从Flask 1.0开始,默认情况下开发服务器是线程化的.