gpt4 book ai didi

Python 请求库不适用于 Flask 应用程序自己的路由

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:46 25 4
gpt4 key购买 nike

在我的 Flask 应用程序上,我有一个路由 ( http://localhost:5000/api/users/ ),它以 JSON 格式从数据库返回用户列表,当通过 curl 或 google chrome postman 请求时它工作得很好。假设该路由被声明为以下代码:

@app.route('/api/users/')
def users():
return 'Some json results...'

然而,在我的应用程序中,我有另一条路线需要使用相同的用户列表,因此我决定提交一个获取请求并从“/api/users/” route 拉取用户。我已经安装了 python 请求库,下面是路由定义,它应该返回相同的用户列表:

@app.route('/api/someroute/')
def someroute():
r = requests.get('http://localhost:5000/api/users/')
return r.json()

现在通过 postman 或 curl 向这条路线 ('/api/someroute/') 提交一个获取请求,直到我关闭该应用程序,才会一直加载。它什么都不返回,没有错误,并且还卡住所有其他路由。就像当我尝试从用户路由('/api/users/')请求数据时仍在为'someroute'加载请求一样,也会继续加载。但是当我尝试从一些外部 url 请求数据时它工作正常。这是从外部资源请求数据的自定义代码:

@app.route('/api/someroute/')
def someroute():
r = requests.get('https://jsonplaceholder.typicode.com/posts/1')
return r.json()

向 someroute 提交 get 请求现在可以正常工作并按预期返回数据

{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}

我尝试了很多外部 url,每个都通过了,没有任何问题,它只是在向它自己的路由/url 提交请求时停止工作。

这个场景只是为了理解,我需要实现一些更复杂的东西,这就是为什么我必须向应用程序自己的路由提交请求。不知道出了什么问题,坚持了这么久。非常感谢任何帮助。

更新:启用线程,它开始正常工作请求关闭此问题。
解决者:Using requests module in flask route function

最佳答案

发生这种情况是因为您的 flask 服务器只有一个线程。当您发出请求时,线程会处理您的请求,并且无法处理它在处理过程中执行的另一个请求。

尝试使用不同的端口运行另一个进程并更改您的 url,它会起作用。此外,您可以使用 --with-threads 选项运行您的服务器。

关于Python 请求库不适用于 Flask 应用程序自己的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42752194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com