gunicorn 和 flask 以及 Nginx 的流媒体服务器问题
Streaming server issue with gunicorn and flask and Nginx
我正在将 gunicorn 和 flask 用于 Web 服务。我正在努力了解 运行 流媒体路线(不确定这是否是正确的术语)。
我的路线是这样的:
@app.route('/delay')
def delay():
from time import sleep
def delay_inner():
for i in range(10):
sleep(5)
yield json.dumps({'delay': i})
return Response(delay_inner(), mimetype="text/event-stream")
我希望服务器在每次 delay_inner 产生输出时产生输出。但是,我得到的是一次所有 json 响应,并且仅当 delay_inner 完成执行时。
我在这里错过了什么?
--编辑--
我已经解决了 Flask 和 Gunicorn 的问题,我可以通过使用 Flask 服务器并转到 Gunicorn 端口来 运行 它。它按预期流式传输数据。但是,我应该在原文 post 中提到这一点,我也 运行ning 支持 nginx。而且没有正确设置流式传输。有人可以帮忙吗?
您需要关闭nginx代理缓冲。
location /delay {
proxy_pass http://127.0.0.1:8080;
proxy_buffering off;
}
并重新加载配置
nginx -s reload
我正在将 gunicorn 和 flask 用于 Web 服务。我正在努力了解 运行 流媒体路线(不确定这是否是正确的术语)。
我的路线是这样的:
@app.route('/delay')
def delay():
from time import sleep
def delay_inner():
for i in range(10):
sleep(5)
yield json.dumps({'delay': i})
return Response(delay_inner(), mimetype="text/event-stream")
我希望服务器在每次 delay_inner 产生输出时产生输出。但是,我得到的是一次所有 json 响应,并且仅当 delay_inner 完成执行时。
我在这里错过了什么?
--编辑-- 我已经解决了 Flask 和 Gunicorn 的问题,我可以通过使用 Flask 服务器并转到 Gunicorn 端口来 运行 它。它按预期流式传输数据。但是,我应该在原文 post 中提到这一点,我也 运行ning 支持 nginx。而且没有正确设置流式传输。有人可以帮忙吗?
您需要关闭nginx代理缓冲。
location /delay {
proxy_pass http://127.0.0.1:8080;
proxy_buffering off;
}
并重新加载配置
nginx -s reload