ホームページ >バックエンド開発 >Python チュートリアル >FastAPI でプッシュ通知を使用してリアルタイムでデータを更新する方法

FastAPI でプッシュ通知を使用してリアルタイムでデータを更新する方法

王林
王林オリジナル
2023-07-29 18:09:141820ブラウズ

FastAPI でプッシュ通知を使用してリアルタイムでデータを更新する方法

はじめに:
インターネットの継続的な発展に伴い、リアルタイムのデータ更新の重要性がますます高まっています。たとえば、リアルタイム取引、リアルタイム監視、リアルタイム ゲームなどのアプリケーション シナリオでは、最も正確な情報と最高のユーザー エクスペリエンスを提供するために、データをタイムリーに更新する必要があります。 FastAPI は、高パフォーマンスの Web アプリケーションを構築するためのシンプルかつ効率的な方法を提供する、最新の Python ベースの Web フレームワークです。この記事では、FastAPIを使用してリアルタイムにデータを更新するプッシュ通知を実装する方法を紹介します。

ステップ 1: 準備
まず、FastAPI と対応する依存ライブラリをインストールする必要があります。次のコマンドを使用してインストールできます:

pip install fastapi
pip install uvicorn

次に、Python ファイルを作成し、main.py という名前を付ける必要があります。その中に FastAPI アプリケーションを記述します。

ステップ 2: プッシュ通知ロジックを作成する
WebSocket を使用してプッシュ通知機能を実装します。 WebSocket は、クライアントとサーバー間の全二重通信を可能にするプロトコルです。 FastAPI では、サードパーティ ライブラリ fastapi-websocket を使用して、WebSocket サポートをアプリケーションに簡単に追加できます。ライブラリは次のコマンドを使用してインストールできます:

pip install fastapi-websocket

main.py で、最初に必要なモジュールをインポートします:

from fastapi import FastAPI, WebSocket
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from fastapi import WebSocket, WebSocketDisconnect

from fastapi_websocket_pubsub import PubSubEndpoint
from fastapi_websocket_pubsub import PubSubWebSocketEndpoint

次に、FastAPI アプリケーション プログラムを作成します。 :

app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")

templates = Jinja2Templates(directory="templates")

次に、WebSocket のロジックを定義する必要があります。 WebSocket のサブクラスを作成し、その中にプッシュ通知機能を実装します。

class NotificationsWebSocket(WebSocketEndpoint):
async def on_receive(self, websocket: WebSocket, data: str):
    # 在这里实现推送通知的逻辑
    # 可以根据需要订阅特定的主题或频道

async def on_connect(self, websocket: WebSocket):
    await websocket.accept()

async def on_disconnect(self, websocket: WebSocket, close_code: int):
    await self.pubsub.unsubscribe(self.room_name, websocket)

app.add_websocket_route("/ws", NotificationsWebSocket)

on_receive メソッドでは、必要に応じて特定のトピックまたはチャネルをサブスクライブし、WebSocket 経由で送信できます。新しいデータをクライアントに送信します。 FastAPI アプリケーションでは、PubSubEndpoint を使用してサブスクリプションと公開ロジックを管理できます。 fastapi_websocket_pubsub ライブラリは、次のコマンドを使用してインストールできます:

pip install fastapi_websocket_pubsub

main.py で、PubSubEndpoint をインポートし、インスタンスを作成します:

from fastapi_websocket_pubsub import PubSubEndpoint

pubsub = PubSubEndpoint()

次に、プッシュ通知機能を使用するために、pubsub インスタンスを WebSocket のサブクラスに渡します。

class NotificationsWebSocket(WebSocketEndpoint):
    async def on_receive(self, websocket: WebSocket, data: str):
        # 在这里实现推送通知的逻辑
        await self.pubsub.publish(self.room_name, data)

    async def on_connect(self, websocket: WebSocket):
        await self.pubsub.subscribe(self.room_name, websocket)
        await websocket.accept()

    async def on_disconnect(self, websocket: WebSocket, close_code: int):
        await self.pubsub.unsubscribe(self.room_name, websocket)

ステップ 3: フロントエンド ページを作成する
フロントエンド ページも作成する必要があります。これにより、ユーザーはサーバーを参照してアプリケーションにアクセスできるようになります。 index.html という名前のファイルを作成し、templates という名前のフォルダーに配置できます。 index.html では、WebSocket を使用してプッシュ通知を購読し、新しいデータを受信したときにページを更新できます。簡単な例を次に示します。

<!DOCTYPE html>
<html>
<head>
    <title>Notifications</title>
</head>
<body>
    <h1>Notifications</h1>
    <ul id="messages"></ul>

    <script>
    const socket = new WebSocket("ws://localhost:8000/ws");
    
    socket.onopen = () => {
        console.log("WebSocket connection is open.");
    };
    
    socket.onmessage = (event) => {
        const message = document.createElement("li");
        message.textContent = event.data;
        document.getElementById("messages").appendChild(message);
    };
    
    socket.onclose = () => {
        console.log("WebSocket connection is closed.");
    };
    
    </script>
</body>
</html>

ステップ 4: アプリケーションの開始
main.py の最後に、FastAPI アプリケーションを開始する次のコードを追加する必要があります。 ##

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

これで、次のコマンドを使用して FastAPI アプリケーションを開始できます:

python main.py

完了!これで、ブラウザから

http://localhost:8000 にアクセスすると、プッシュ通知機能を表示できるようになります。新しいデータがプッシュされると、ページが自動的に更新され、最新の情報が表示されます。

結論:

この記事では、FastAPI でプッシュ通知を使用してリアルタイムでデータを更新する方法を紹介します。 WebSocket ライブラリと PubSubEndpoint ライブラリを使用することで、プッシュ通知機能を簡単に実装できます。リアルタイムでデータを更新するこの方法は、リアルタイム取引、リアルタイム監視、リアルタイム ゲームなどの多くのアプリケーション シナリオに適用できます。この記事があなたのお役に立てば幸いです。また、FastAPI を使用してより効率的でリアルタイムの Web アプリケーションを構築できることを願っています。

以上がFastAPI でプッシュ通知を使用してリアルタイムでデータを更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。