第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Fastapi集成SSE服務(wù)后端主動(dòng)推送消息到前端

標(biāo)簽:
Python

sse技术简介

SSE(Server-Sent Events)是一种允许服务器向客户端浏览器推送信息的技术。它是 HTML5 的一部分,专门用于建立一个单向的从服务器到客户端的通信连接。SSE的使用场景非常广泛,包括实时消息推送、实时通知更新等。
严格地说,HTTP 无法做到服务器主动推送信息。但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息(streaming)。

也就是说,发送的不是一次性的数据包,而是一个数据流,会连续不断地发送过来。这时,客户端不会关闭连接,会一直等着服务器发过来的新的数据流,视频播放就是这样的例子。本质上,这种通信就是以流信息的方式,完成一次用时很长的下载。

SSE 就是利用这种机制,使用流信息向浏览器推送信息。

FastAPI集成SSE功能

配置环境
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sse-starlette fastapi[all]

代码实现:

try:
    from sse_starlette.sse import EventSourceResponse
    import asyncio
except:
    import os
    os.system('pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sse-starlette')
    from sse_starlette.sse import EventSourceResponse
    import asyncio


@router.get("/sse")
async def root(request: Request):
    async def event_generator(request: Request):
        while True:
            if await request.is_disconnected():
                print("连接已中断")
                break
            sse_test_data = gl.gl_Redis.hgetall('sse:test:data')
            sse_test_data['warn_site'] = sse_test_data['warn_site'].split(',') if sse_test_data.get('warn_site') else []
            yield {
                "event": "message",
                # "retry": 15000,
                "data": demjson.encode(sse_test_data)
            }

            await asyncio.sleep(10)
    g = event_generator(request)
    return EventSourceResponse(g)

SEE客户端测试脚本

import aiohttp
import asyncio

async def test():
    headers = {'Content-Type': 'text/event-stream'}
    sseresp = aiohttp.request("GET", r"http://127.0.0.1:9000/api/sse", headers=headers)
    async with sseresp as r:
        async for chunk in r.content.iter_any():
            print(chunk.decode())

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(test())

【特别提示】在现在大多数webviews框架打包APP时,sse服务无效!!!

本文由博客一文多发平台 OpenWrite 发布!

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消