ホームページ >バックエンド開発 >Python チュートリアル >FastAPI でプッシュ通知を使用してリアルタイムでデータを更新する方法
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 サイトの他の関連記事を参照してください。