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

Flask框架里面sse的使用示例

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

可以在一個 Flask 應(yīng)用中注冊多個 Blueprint,每個 Blueprint 可以對應(yīng)一個 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)

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

from flask import Flask, Response, request

app = Flask(__name__)

# 存儲所有的訂閱者
subscribers = {}

# 訂閱接口,每個瀏覽器對應(yīng)一個topic
@app.route('/subscribe/<topic>')
def subscribe(topic):
    def stream():
        # 將當前請求的客戶端添加到訂閱者列表中
        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)
            # 休眠一段時間,減少服務(wù)器壓力
            time.sleep(1)

    # 設(shè)置響應(yīng)頭,告訴客戶端這是一個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'

在上面的代碼中,我們定義了兩個接口,`/subscribe/<topic>`用于訂閱指定的topic,`/publish/<topic>`用于向指定topic的所有訂閱者推送消息。
在訂閱接口中,我們將當前請求的客戶端添加到訂閱者列表中,并通過一個無限循環(huán)等待新的消息。當有新的消息到達時,我們會向所有訂閱者推送這條消息。
在推送接口中,我們獲取要推送的消息,并向指定topic的所有訂閱者推送這條消息。
使用這個代碼,你可以輕松地實現(xiàn)一個簡單的SSE推送服務(wù),每個瀏覽器對應(yīng)一個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():
    # 獲取客戶端標識符
    client_id = str(uuid.uuid4())

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

# SSE 推送路由


@app.route('/sse', methods=['POST'])
def stream():
    # 獲取客戶端標識符
    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 擴展來管理 SSE 通道。我們在 `/register` 路由中為每個客戶端創(chuàng)建了唯一的標識符,并將其存儲在請求環(huán)境中。在 `/sse` 路由中,我們使用 `sse.publish` 方法發(fā)送 SSE 數(shù)據(jù)。

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    Python之Matlibplot畫圖功能演示過程

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

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

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

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

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

    Django 自動生成api接口文檔教程

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

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

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

最新評論

滨州市| 芷江| 济南市| 娱乐| 锦州市| 漳平市| 峨眉山市| 石景山区| 永济市| 望都县| 灵武市| 贡觉县| 奇台县| 法库县| 孝义市| 乌兰县| 平昌县| 上栗县| 诸城市| 木兰县| 张掖市| 阳江市| 诏安县| 乐亭县| 连州市| 西乌珠穆沁旗| 天长市| 通州区| 中山市| 长岭县| 博湖县| 金溪县| 乌兰浩特市| 阿克陶县| 沙洋县| 内丘县| 焦作市| 青河县| 黑山县| 天门市| 泸水县|