gpt4 book ai didi

python - 在端点上阻塞 Flask 不允许另一个端点调用

转载 作者:行者123 更新时间:2023-12-04 13:57:02 36 4
gpt4 key购买 nike

我的flask API 的端点之一向实时流发出长请求。以下是代码示例:

@app.route('/stream')
def live_stream(sensor_id):
stream = requests.get('stream_url', stream=True)
return Response(stream_with_context(stream.iter_content(chunk_size=2048)),
content_type=stream.headers['content-type'])

这条路线运行良好,溪流运行良好。但是,当我尝试向另一条路由发出请求时,服务器似乎卡在了这个端点上。

我正在使用 gevent WSGI 服务器:
 http_server = WSGIServer(('0.0.0.0', 5000), app).serve_forever()

我正在从一个已经由 Flask 路由返回的模板发出请求。

如何向 API 发出并行请求而不会陷入困境?

最佳答案

我从未使用过 gevent,但如果我理解正确,它有一个单线程事件循环(如 asyncio)。但我的理解可能是错误的。

看看这个答案 https://stackoverflow.com/a/19153826/

When you have a piece of python code that takes a long time to run (for seconds) and does not cause switching of greenlets, all other greenlets / gevent jobs will 'starve' and have no computation time and it will look like your application 'hangs'.



我建议执行以下操作之一:
  • 或者,在线程化 WSGI 服务器中运行您的 Web 应用程序
  • 或者,研究 gevent 是否有一个网络客户端,您可以使用它来代替 requests这是基于问候语
  • 或者,在线程工具中运行代码的阻塞部分
  • 或者,调用 from gevent import monkey; monkey.patch_all()作为服务器代码中的第一件事,看看这是否使 requests行为非阻塞。
  • 关于python - 在端点上阻塞 Flask 不允许另一个端点调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60189817/

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