FastAPI通过SSE进行流式输出

服务端推送

在服务器推送技术中,服务器在消息可用后立即主动向客户端发送消息。其中,有两种类型的服务器推送:SSE和 WebSocket。

SSE(Server-Send Events)

SSE 是一种在基于浏览器的 Web 应用程序中仅从服务器向客户端发送文本消息的技术。SSE基于 HTTP 协议中的持久连接, 具有由 W3C 标准化的网络协议和 EventSource 客户端接口,作为 HTML5 标准套件的一部分。

那么,在FastAPI中怎么实现呢?

下面将介绍其实现过程:

pip install asyncio
pip install sse-starlette

代码:

import jsonfrom fastapi import FastAPI, Query, Path
import uvicorn
from starlette.requests import Request
import asyncio
from sse_starlette import EventSourceResponseapp = FastAPI()@app.get("/stream")
async def flush_stream(request: Request):async def event_generator(request: Request):res_str = "双天至尊真是一部好的电视剧!!!"for idx, word in enumerate(res_str):if await request.is_disconnected():print("连接已中断")breakdata = json.dumps({"id": idx, "message": word}, ensure_ascii=False)yield dataawait asyncio.sleep(1)return EventSourceResponse(event_generator(request))if __name__ == '__main__':uvicorn.run("Run:app", host="0.0.0.0", port=8080)

效果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/162315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【高级网络程序设计】Week2-1 Sockets

一、The Basics 1. Sockets 定义An abstraction of a network interface应用 use the Socket API to create connections to remote computers send data(bytes) receive data(bytes) 2. Java network programming the java network libraryimport java.net.*;similar to…

pgsql常用命令总结

pgsql常用命令及相关总结 命令 命令登录 psql -U postgres -h 127.0.0.1 -p 5432 -d vism查看所有数据库:\l 进入某一数据库:\c 数据库名字 查看数据库表:\dt 列出某一张表格的结构:\d 表名 查看某个表的所有数据:s…

学习笔记记录

目录 windows php一句话木马 日志清理 DOS命令 查看用户的SID 最高权限 常见的cmd命令 反弹shell PHPMYadmin mysql注入语句 wmic linux crontab创建隐藏后门 linux日志文件 knockd服务 ssh登录 ssh隧道 本地转发 远程转发 动态转发 /proc: Centos 8 更…

CentOS 7 使用cJSON 库

什么是JSON JSON是一种轻量级的数据交换格式,可读性强、编写简单。键值对组合编写规则,键名使用双引号包裹,冒号:分隔符后面紧跟着数值,有两种常用的数据类型是对象和数组。 对象:使用花括号{}包裹起来的…

【Rxjava详解】(三)更好实践异步请求

本文为更像demo的总结,在实际开发中,利用rxjava采取异步请求在一些简单的单纯请求数据上面,会显得没有必要,但rxjava提供的思路,在后期不论是增加功能,还是说整体代码的工整度,都能感受到开发的…

补充:自动化测试高级应用之python多线程的使用-新方法

前段时间在网上学习多线程跑用例的时,发现一种更简洁,优雅的使用多线程的方法,在此分享给大家。 阅读本文前,请先阅读前面写的多线程跑用例的文章:【精选】第七章 第四节 自动化测试高级应用之python多线程的使用_add_test_img-CSDN博客 本文新的方法,对原有的run_al…

接口传参数list的时候,items里面放个​​​​​​​list

item里面放个list 先定义一个 list,循环add加入参数

java之switch case的用法

java之switch case的用法 Java中的switch语句是一种多路选择结构,它允许一个变量在其值的多个可能选项之间进行选择。这种结构可以替代一系列嵌套的if-else语句,使代码更清晰和简洁。 下面是switch语句的基本语法: switch (expression) { …

android keylayout键值适配

1、通过getevent打印查看当前keyevent数字对应事件和物理码 2、dumpsys input 查看输入事件对应的 KeyLayoutFile: /system/usr/keylayout/Vendor_6080_Product_8060.kl 3、通过物理码修改键值映射,修改/system/usr/keylayout/目录下的文件

CuratorFramework的blockUntilConnected方法

CuratorFramework是一个ZooKeeper客户端库,它提供了一些用于处理ZooKeeper连接和节点操作的高级API。其中,blockUntilConnected方法是一个阻塞方法,它会一直阻塞直到客户端成功连接到ZooKeeper服务器。 具体来说,blockUntilConne…

(三)、基于 LangChain 实现大模型应用程序开发 | 模型链 Chains

😄 为什么我们需要Chains ? 链允许我们将多个组件组合在一起,以创建一个单一的、连贯的应用程序。链(Chains)通常将一个LLM(大语言模型)与提示结合在一起,使用这个构建块&#xff0…

永久免费!N个excel表一键合并成一个表(excel表格合并技巧)

您是否还在用手工复制粘贴来将多个EXCEL或表的数据合并到一个表里?那就太麻烦,效率太低了,用金鸣表格文字识别的“表格合并”功能,可免费将N个excel文件或N个excel表一键合并到一个表里面,而且这个功能永久免费&#x…

【C++】特殊类设计 {不能被拷贝的类;只能在堆上创建的类;只能在栈上创建的类;不能被继承的类;单例模式:懒汉模式,饿汉模式}

一、不能被拷贝的类 设计思路: 拷贝只会发生在两个场景中:拷贝构造和赋值重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造以及赋值重载即可。 C98方案: 将拷贝构造与赋值重载只声明不定义,并…

FDG6306P PowerTrench® MOSFET P沟道 特点及其应用详解

关于PowerTrench MOSFET? 它是一种MOS场效应晶体管,可以提高系统效率和功率密度。该技术采用了屏蔽栅极技术,可以减少开关损耗和导通损耗,从而提高了系统效率。此外,PowerTrench MOSFET还具有低导通电阻和高开关速度的…

三角洲杂志三角洲杂志社三角洲编辑部2023年第19期目录

作家在线 李明聪 把写作当成一种享受 李明聪; 2 头条作品 冬天的童话 王排; 5-7 迎来春色换人间 王排; 8《三角洲》投稿:cnqikantg126.com 小说精选 钢哥 曹茂炯; 9-25 重逢 莫艳阳; 26 散文现场 孩子,你相信光吗? 赵…

前端js语音朗读文本

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>语音朗读</title></head><body>&l…

如何满足BMW EDI项目的PKT需求?

近期宝马BMW&#xff08;以下简称BMW&#xff09;在其部分供应商之间试点推进PKT项目&#xff0c;BMW为什么要启动 PKT 计划呢&#xff1f; 业务系统全面升级统一全球所有宝马工厂的流程 宝马内部的物流供货流程 近期BMW PKT需求主要针对其内部物流供货流程展开&#xff1a; …

嵌入式开发--赛普拉斯cypress的铁电存储器FM25CL64B

嵌入式开发–赛普拉斯cypress的铁电存储器FM25CL64B 简介 FM25CL64B是赛普拉斯cypress出品的一款铁电存储器&#xff0c;这种存储器最大的优势是可以像RAM一样随机存储&#xff0c;和按字节写入&#xff0c;也可以像ROM一样掉电仍然可以保存数据&#xff0c;是一种相当优秀的…

Redis 持久化机制

client Redis[内存] --> 内存数据、磁盘数据----> 磁盘&#xff0c;Redis官方提供了两种不同的持久化方案将内存中的数据存储在硬盘中&#xff1a; 快照&#xff08;Snapshot&#xff09; AOF只追加日志文件。 1、快照&#xff08;Snapshot&#xff09; 1、快照的特点…

如何用CHAT解释文章含义?

问CHAT&#xff1a;解释“ 本身乐善好施&#xff0c;令名远近共钦&#xff0c;待等二十左右&#xff0c;定有高亲可攀&#xff1b;而且四德俱备&#xff0c;帮夫之缘亦有。主持家事不紊&#xff0c;上下亦无闲言。但四十交进&#xff0c;家内谨防口舌&#xff0c;须安家堂&…