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

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 23: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月24日
  • 已采纳回答 3月16日
  • 创建了问题 3月15日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。