最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flask框架里面sse的使用示例

 更新時(shí)間:2025年05月20日 09:24:22   作者:zwjapple  
本文主要介紹了Flask框架里面sse的使用示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

可以在一個(gè) Flask 應(yīng)用中注冊(cè)多個(gè) Blueprint,每個(gè) Blueprint 可以對(duì)應(yīng)一個(gè) SSE 接口。例如:

from flask import Flask, Response, Blueprint
import time

app = Flask(__name__)

bp1 = Blueprint('sse1', __name__)
bp2 = Blueprint('sse2', __name__)

@bp1.route('/sse1')
def sse1():
    def generate():
        while True:
            yield 'data: {}\n\n'.format(time.time())
            time.sleep(1)
    return Response(generate(), mimetype='text/event-stream')

@bp2.route('/sse2')
def sse2():
    def generate():
        while True:
            yield 'data: {}\n\n'.format(time.strftime('%Y-%m-%d %H:%M:%S'))
            time.sleep(1)
    return Response(generate(), mimetype='text/event-stream')

app.register_blueprint(bp1)
app.register_blueprint(bp2)

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

在這個(gè)例子中,我們創(chuàng)建了兩個(gè) Blueprint,分別對(duì)應(yīng) `/sse1` 和 `/sse2` 接口。每個(gè) Blueprint 中的函數(shù)都返回一個(gè) SSE 數(shù)據(jù)流,使用 `Response` 類型的響應(yīng)對(duì)象封裝。最后在 Flask 應(yīng)用中注冊(cè)這兩個(gè) Blueprint,即可同時(shí)開啟兩個(gè) SSE 接口。

from flask import Flask, Response, request

app = Flask(__name__)

# 存儲(chǔ)所有的訂閱者
subscribers = {}

# 訂閱接口,每個(gè)瀏覽器對(duì)應(yīng)一個(gè)topic
@app.route('/subscribe/<topic>')
def subscribe(topic):
    def stream():
        # 將當(dāng)前請(qǐng)求的客戶端添加到訂閱者列表中
        subscribers.setdefault(topic, []).append(stream)
        # 無限循環(huán),等待新的消息
        while True:
            # 等待新的消息
            message = request.args.get('message')
            if message:
                # 向所有訂閱者推送新的消息
                for subscriber in subscribers.get(topic, []):
                    subscriber.put(message)
            # 休眠一段時(shí)間,減少服務(wù)器壓力
            time.sleep(1)

    # 設(shè)置響應(yīng)頭,告訴客戶端這是一個(gè)SSE流
    response = Response(stream(), mimetype='text/event-stream')
    response.headers['Cache-Control'] = 'no-cache'
    response.headers['Connection'] = 'keep-alive'
    return response

# 推送接口,向指定topic的所有訂閱者推送消息
@app.route('/publish/<topic>')
def publish(topic):
    # 獲取要推送的消息
    message = request.args.get('message')
    if message:
        # 向所有訂閱者推送新的消息
        for subscriber in subscribers.get(topic, []):
            subscriber.put(message)
    return 'OK'

在上面的代碼中,我們定義了兩個(gè)接口,`/subscribe/<topic>`用于訂閱指定的topic,`/publish/<topic>`用于向指定topic的所有訂閱者推送消息。
在訂閱接口中,我們將當(dāng)前請(qǐng)求的客戶端添加到訂閱者列表中,并通過一個(gè)無限循環(huán)等待新的消息。當(dāng)有新的消息到達(dá)時(shí),我們會(huì)向所有訂閱者推送這條消息。
在推送接口中,我們獲取要推送的消息,并向指定topic的所有訂閱者推送這條消息。
使用這個(gè)代碼,你可以輕松地實(shí)現(xiàn)一個(gè)簡單的SSE推送服務(wù),每個(gè)瀏覽器對(duì)應(yīng)一個(gè)topic。

import uuid
from flask import Flask, jsonify, request, Response, g
from flask_cors import CORS
from flask_sse import sse
import time
import json

app = Flask(__name__)
cros = CORS(app)
app.config['REDIS_URL'] = 'redis://localhost'
app.register_blueprint(sse, url_prefix='/stream')
# SSE 推送函數(shù)


# SSE 推送路由


@app.route('/register', methods=["GET"])
def register():
    # 獲取客戶端標(biāo)識(shí)符
    client_id = str(uuid.uuid4())

    # 返回 SSE 響應(yīng)
    return jsonify({"client_id": client_id})

# SSE 推送路由


@app.route('/sse', methods=['POST'])
def stream():
    # 獲取客戶端標(biāo)識(shí)符
    data = request.get_json()
    client_id = data['clientId']
    print("client_id", client_id)

    def aa():
        # 循環(huán)發(fā)送 SSE 數(shù)據(jù)
        for i in range(10):
            data = 'Hello, %s!' % client_id+str(i)
            sse.publish(data, channel=client_id, type='message')
            time.sleep(1)
        sse.publish("end", channel=client_id, type='message')
     # 返回 SSE 響應(yīng)
    response = Response(aa(), mimetype='text/event-stream')
    response.headers.add('Cache-Control', 'no-cache')
    response.headers.add('Connection', 'keep-alive')
    response.headers.add('X-Accel-Buffering', 'no')
    return response


if __name__ == '__main__':
    app.run(debug=True, port=5000)

在上面的代碼中,我們使用了 Flask-SSE 擴(kuò)展來管理 SSE 通道。我們?cè)?`/register` 路由中為每個(gè)客戶端創(chuàng)建了唯一的標(biāo)識(shí)符,并將其存儲(chǔ)在請(qǐng)求環(huán)境中。在 `/sse` 路由中,我們使用 `sse.publish` 方法發(fā)送 SSE 數(shù)據(jù)。

到此這篇關(guān)于Flask框架里面sse的使用示例的文章就介紹到這了,更多相關(guān)Flask使用sse內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python環(huán)境的安裝以及PyCharm編輯器配置教程詳解

    Python環(huán)境的安裝以及PyCharm編輯器配置教程詳解

    優(yōu)質(zhì)的教程可以讓我們少走很多彎路,這一點(diǎn)毋庸置疑。這篇文章主要為大家介紹了純凈Python環(huán)境的安裝以及PyCharm編輯器的配置,需要的可以參考一下
    2023-04-04
  • Python圖像特效之模糊玻璃效果

    Python圖像特效之模糊玻璃效果

    這篇文章主要為大家詳細(xì)介紹了Python圖像特效之模糊玻璃效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python自動(dòng)化短視頻生成腳本實(shí)現(xiàn)熱門視頻流水線生產(chǎn)

    Python自動(dòng)化短視頻生成腳本實(shí)現(xiàn)熱門視頻流水線生產(chǎn)

    有粉絲和說,最近在網(wǎng)上看到一些視頻營銷號(hào)一天能發(fā)布幾百條短視頻, 感覺是批量生成的,能不能用Python做個(gè)自動(dòng)化短視頻生成腳本呢?今天就帶大家一起實(shí)現(xiàn)熱門視頻批量流水線生產(chǎn)
    2021-09-09
  • 使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的方法

    使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的方法

    數(shù)據(jù)結(jié)構(gòu)是指相互之間存在著一種或多種關(guān)系的數(shù)據(jù)元素的集合和該集合中數(shù)據(jù)元素之間的關(guān)系組成。這篇文章主要介紹了使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的相關(guān)知識(shí),需要的朋友可以參考下
    2019-12-12
  • python實(shí)現(xiàn)向微信用戶發(fā)送每日一句 python實(shí)現(xiàn)微信聊天機(jī)器人

    python實(shí)現(xiàn)向微信用戶發(fā)送每日一句 python實(shí)現(xiàn)微信聊天機(jī)器人

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)向微信用戶發(fā)送每日一句,python調(diào)實(shí)現(xiàn)微信聊天機(jī)器人,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python之Matlibplot畫圖功能演示過程

    Python之Matlibplot畫圖功能演示過程

    這篇文章主要介紹了Python之Matlibplot畫圖功能演示過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 從基礎(chǔ)到高級(jí)詳解Python迭代器手動(dòng)訪問完全指南

    從基礎(chǔ)到高級(jí)詳解Python迭代器手動(dòng)訪問完全指南

    在Python高級(jí)編程中,手動(dòng)控制迭代器是處理復(fù)雜數(shù)據(jù)流的關(guān)鍵技術(shù),本文將深入解析Python手動(dòng)迭代技術(shù)體系,并拓展大數(shù)據(jù)處理、流式計(jì)算、自定義數(shù)據(jù)結(jié)構(gòu)等工程級(jí)應(yīng)用場景
    2025-09-09
  • Python?Rich增加終端顯示視覺效果

    Python?Rich增加終端顯示視覺效果

    Python開發(fā)中,命令行界面(CLI)經(jīng)常被用于交互和數(shù)據(jù)展示,雖然命令行界面通常被視為簡單、枯燥的文本顯示區(qū)域,通過Python的Rich庫,為命令行界面帶來更多生機(jī)和視覺吸引力,本文帶大家探索Rich功能強(qiáng)大的Python庫,增強(qiáng)終端文本渲染,使輸出更具有吸引力和可讀性
    2024-01-01
  • Django 自動(dòng)生成api接口文檔教程

    Django 自動(dòng)生成api接口文檔教程

    今天小編就為大家分享一篇Django 自動(dòng)生成api接口文檔教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • selenium 多窗口切換的實(shí)現(xiàn)(windows)

    selenium 多窗口切換的實(shí)現(xiàn)(windows)

    這篇文章主要介紹了selenium 多窗口切換的實(shí)現(xiàn)(windows),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01

最新評(píng)論

兴仁县| 阿鲁科尔沁旗| 宣武区| 洛扎县| 通许县| 武安市| 枣庄市| 马龙县| 黑山县| 乌兰浩特市| 上高县| 新乡市| 于都县| 湖南省| 和平县| 定日县| 武城县| 华坪县| 资溪县| 门源| 中卫市| 芮城县| 大同县| 游戏| 定边县| 泾阳县| 阿城市| 遵义县| 茂名市| 通山县| 洪泽县| 永宁县| 西乌珠穆沁旗| 朝阳县| 岳池县| 抚宁县| 高青县| 东安县| 固镇县| 山丹县| 海安县|