gunicorn、flask 和 Nginx 的流媒体服务器问题

问题描述 投票:0回答:2

我正在使用 Gunicorn 和 Flask 来提供网络服务。我正在尝试运行流媒体路线(不确定这是否是正确的术语)。

我的路线是这样的:

@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 端口按预期运行它。它按预期传输数据。然而,我应该在原来的帖子中提到这一点,我也在 nginx 后面运行。并且没有正确设置流媒体。有人可以帮忙吗?

python nginx flask streaming gunicorn
2个回答
9
投票

您需要关闭 nginx 代理缓冲。

location /delay {
         proxy_pass http://127.0.0.1:8080;
         proxy_buffering off;
}

并重新加载配置

nginx -s reload

0
投票

@Mark 您能否指导我如何使用 Gunicorn 执行流端点?我正在使用命令

gunicorn -k eventlet --bind 0.0.0.0:7000 --timeout 300 app:app

但是当我运行我的流端点时,它没有响应;其他端点工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.