小袁同学. 2023-03-15 15:25 采纳率: 37.5%
浏览 67
已结题

flask stream流式传输在uwsgi环境下流不动

python flask 做的一个流式发送的的接口,服务端接口如下:

from flask import Flask, Response
import time
app = Flask(__name__)
@app.route('/stream', methods=['POST'])
def stream():
    def generate():
        for i in range(10):
            yield str(i)
            time.sleep(1)
    return Response(generate(), mimetype='text/plain')

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0')

客户端如下

import requests
import time 
response = requests.get('http://127.0.0.1:5000/stream', stream=True)
for chunk in response.iter_content():
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),chunk)

正常运行客户端之后会一次请求,然后每秒钟打印一个数字,进行流式传输内容,目前的代码可以实现,但是我加上了域名和ssl和uwsgi和nginx之后,就没有流式传输的效果了,我的这个是部署在宝塔上的一个测试应用,ssl那些都逐个测试过了,目前接口可以通,但是就是没有流式效果,我初步判断是nginx和uwsgi配置里面有问题,但是这两个配置都是宝塔自动生成的,不太知道怎么改。问了gpt他告诉我的那些都白扯,还希望有经验的大手子,帮我看一看问题所在

  • 写回答

5条回答 默认 最新

  • 「已注销」 2023-03-15 15:45
    关注

    参考GPT和自己的思路:在 uwsgi 和 Nginx 配置中确保开启了长连接和流式传输。您可以在 uwsgi 的配置文件中添加如下参数:

    http-timeout = 120
    http-keepalive = true
    chunked-input = 8192
    
    
    

    在 Nginx 的配置文件中,需要添加以下参数:

    proxy_buffering off;
    proxy_request_buffering off;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    
    

    这些参数的具体配置可能因您的具体情况而异。您可以根据您的需要进行调整。完成这些配置后,重新启动 uwsgi 和 Nginx,看看是否解决了问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 已采纳回答 3月16日
  • 创建了问题 3月15日

悬赏问题

  • ¥15 损失匹配问题,求解答
  • ¥15 3500常用汉字书法体检测数据集下载
  • ¥15 odoo17在制造模块或采购模块良品与次品如何分流和在质检模块下如何开发
  • ¥15 Qt音乐播放器的音乐文件相对路径怎么写
  • ¥15 VB.NET利用摄像头拍照的程序
  • ¥15 linux下vscode设置不了字连体
  • ¥20 游戏mod是如何制作的
  • ¥15 关于#hadoop#的问题:按照老师上课讲的步骤写的
  • ¥20 有人会用这个工具箱吗 付fei咨询
  • ¥30 成都市武侯区住宅小区兴趣点