当前位置: 首页 > news >正文

flask流式输出-SSE服务

一、定义

  1. flask demo
  2. 前端遇到的问题

二、实现

  1. flask demo
from gevent import monkey
monkey.patch_all()         #并行
import time
from flask import Response, stream_with_context
from flask import Flask
from gevent.pywsgi import WSGIServer
from flask import request
app=Flask(__name__)
from flask_cors import CORS
CORS(app)            #解决跨域问题def predict():chatbot=[""]mid='''一、引言\n1. 背景介绍\n2. 研究意义\n\n二、多旋翼无人机概述\n1. 多旋翼无人机的定义\n2. 多旋翼无人机的特点\n3. 多旋翼无人机的基本结构\n\n三、多旋翼无人机控制方法\n1. 手动控制\n2. 遥控控制\n3. 自主控制\n\n四、多旋翼无人机调度方法\n1. 手动调度\n2. 遥控调度\n3. 自主调度\n\n五、多旋翼无人机应用实例\n1. 农业领域\n2. 航拍领域\n3. 搜索救援\n4. 其他应用领域\n\n六、多旋翼无人机的安全问题\n1. 飞行安全隐患\n2. 数据隐私问题\n3. 人机交互问题\n\n七、结论\n1. 研究总结\n2. 研究局限\n3. 研究展望'''s=""for response in mid:s+=responseyield [s], []import json@app.route('/stream',methods=["GET","POST"])
def stream():kwargs = request.get_data(as_text=True)@stream_with_contextdef generate():data_stream = predict()for data in data_stream:print(data)time.sleep(0.1)yield str("data:") + str(data) + "\n\n"       #必须保证 前面是“data:”      后面是“\n\n”headers = {'Content-Type': 'text/event-stream','Cache-Control': 'no-cache','X-Accel-Buffering': 'no',"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET,POST","Access-Control-Allow-Headers":"x-requested-with,content-type"}return Response(generate(),mimetype="text/event-stream",headers=headers)    #类型event-stream
if __name__ == '__main__':http_server = WSGIServer(('0.0.0.0', int(8081)), app)http_server.serve_forever()

测试:

from sseclient import SSEClient
messages = SSEClient('http://127.0.0.1:8081/stream')
for msg in messages:print(msg.event,"data")print([msg.data])
  1. 前端遇到的问题
    前端一直接受不到消息,原因:存在跨域。解决:前端做一个代理,即可打通。
http://www.lryc.cn/news/309761.html

相关文章:

  • 注解整理ing
  • Android 将图片网址url转化为bitmap
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:颜色渐变)
  • 腾讯云幻兽帕鲁游戏存档迁移教程,本地单人房迁移/四人世界怎么迁移存档?
  • C2_W2_Assignment_吴恩达_中英_Pytorch
  • C语言实现航班管理
  • 【Java面试题】SpringBoot与Spring的区别
  • 网络编程(IP、端口、协议、UDP、TCP)【详解】
  • Linux线程(二)----- 线程控制
  • Linux 内核irq_stack遍历
  • GIT问题记录
  • AzerothCore安装记录
  • Infineon_TC264智能车代码初探及C语言深度学习(一)
  • [Redis]——初识Redis
  • YTM32的同步串行通信外设SPI外设详解(Master Part)
  • 【C语言】三子棋
  • Web组态可视化编辑器 快速绘制组态
  • WebServer -- 注册登录
  • C3_W2_Collaborative_RecSys_Assignment_吴恩达_中英_Pytorch
  • Elasticsearch使用function_score查询酒店和排序
  • iOS消息发送流程
  • 【接口测试】常见HTTP面试题
  • 服务器硬件基础知识
  • matlab实现层次聚类与k-均值聚类算法
  • 【机器学习】包裹式特征选择之递归特征消除法
  • 【ArcGIS】重采样栅格像元匹配问题:不同空间分辨率栅格数据统一
  • Qt 简约又简单的加载动画 第七季 音量柱风格
  • 【JS】数值精度缺失问题解决方案
  • c++基础知识补充4
  • leetcode230. 二叉搜索树中第K小的元素