我无法使用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)
答案 0 :(得分:9)
您的代码假设您的应用可以同时处理多个请求:初始请求以及处理初始请求时生成的请求。
如果您正在运行像app.run()
这样的开发服务器,它默认在单个线程中运行;因此,它一次只能处理一个请求。
使用app.run(threaded=True)
在开发服务器中启用多个线程。
从Flask 1.0开始,默认情况下开发服务器是线程化的。