Rumah >pembangunan bahagian belakang >Tutorial Python >Cara menggunakan pemberitahuan tolak dalam FastAPI untuk mengemas kini data dalam masa nyata

Cara menggunakan pemberitahuan tolak dalam FastAPI untuk mengemas kini data dalam masa nyata

王林
王林asal
2023-07-29 18:09:141899semak imbas

Cara menggunakan pemberitahuan tolak dalam FastAPI untuk mengemas kini data dalam masa nyata

Pengenalan:
Dengan perkembangan berterusan Internet, kemas kini data masa nyata menjadi semakin penting. Contohnya, dalam senario aplikasi seperti perdagangan masa nyata, pemantauan masa nyata dan permainan masa nyata, kami perlu mengemas kini data tepat pada masanya untuk memberikan maklumat yang paling tepat dan pengalaman pengguna yang terbaik. FastAPI ialah rangka kerja web berasaskan Python moden yang menyediakan cara yang mudah dan cekap untuk membina aplikasi web berprestasi tinggi. Artikel ini akan memperkenalkan cara menggunakan FastAPI untuk melaksanakan pemberitahuan tolak untuk mengemas kini data dalam masa nyata.

Langkah 1: Penyediaan
Pertama, kita perlu memasang FastAPI dan perpustakaan bergantung yang sepadan. Ia boleh dipasang menggunakan arahan berikut:

pip install fastapi
pip install uvicorn

Seterusnya, kita perlu mencipta fail Python dan menamakannya main.py. Kami akan menulis aplikasi FastAPI kami di dalamnya. main.py。我们将在其中编写我们的FastAPI应用程序。

步骤二:编写推送通知逻辑
我们将使用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)

步骤三:创建前端页面
我们还需要创建一个前端页面,以便用户可以通过浏览器访问我们的应用程序。可以创建一个名为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>

步骤四:启动应用程序
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

Langkah 2: Tulis logik pemberitahuan tolak

Kami akan menggunakan WebSocket untuk melaksanakan fungsi pemberitahuan tolak. WebSocket ialah protokol yang membolehkan komunikasi dupleks penuh antara klien dan pelayan. Dalam FastAPI, kami boleh menggunakan pustaka pihak ketiga fastapi-websocket untuk menambahkan sokongan WebSocket pada aplikasi kami dengan mudah. Perpustakaan boleh dipasang menggunakan arahan berikut:
rrreee

Dalam main.py, kami mula-mula mengimport modul yang diperlukan: 🎜rrreee🎜Kemudian, kami mencipta aplikasi FastAPI: 🎜rrreee🎜Seterusnya, kami perlu untuk menentukan logik WebSocket. Kami akan mencipta subkelas WebSocket dan melaksanakan fungsi pemberitahuan tolak di dalamnya: 🎜rrreee🎜Dalam kaedah on_receive, kami boleh melanggan topik atau saluran tertentu mengikut keperluan dan menghantar data baharu melalui WebSocket Dihantar kepada pelanggan . Dalam aplikasi FastAPI, kami boleh menggunakan PubSubEndpoint untuk mengurus logik langganan dan penerbitan. Pustaka fastapi_websocket_pubsub boleh dipasang menggunakan arahan berikut: 🎜rrreee🎜Dalam main.py, kami mengimport PubSubEndpoint dan mencipta contoh: 🎜rrreee🎜Kemudian, kami lulus pubsub instance Berikan subkelas WebSocket untuk menggunakan fungsi pemberitahuan tolak di dalamnya: 🎜rrreee🎜 Langkah Ketiga: Buat halaman hadapan 🎜 Kami juga perlu mencipta halaman hadapan supaya pengguna boleh mengakses aplikasi kami melalui pelayar. Anda boleh mencipta fail yang dipanggil index.html dan meletakkannya dalam folder yang dipanggil templates. Dalam index.html kami boleh menggunakan WebSocket untuk melanggan pemberitahuan tolak dan mengemas kini halaman apabila data baharu diterima. Berikut ialah contoh mudah: 🎜rrreee🎜 Langkah 4: Mulakan aplikasi 🎜 Pada penghujung main.py, kita perlu menambah kod berikut untuk memulakan aplikasi FastAPI: 🎜rrreee🎜Sekarang, kita boleh menggunakan Perintah berikut memulakan aplikasi FastAPI kami: 🎜rrreee🎜Selesai! Kini, kita boleh melawati http://localhost:8000 melalui penyemak imbas untuk melihat fungsi pemberitahuan tolak. Apabila data baharu ditolak, halaman akan dikemas kini secara automatik untuk memaparkan maklumat terkini. 🎜🎜Kesimpulan: 🎜Artikel ini menerangkan cara menggunakan pemberitahuan tolak dalam FastAPI untuk mengemas kini data dalam masa nyata. Dengan menggunakan perpustakaan WebSocket dan PubSubEndpoint, kami boleh melaksanakan fungsi pemberitahuan tolak dengan mudah. Kaedah mengemas kini data dalam masa nyata ini boleh digunakan pada banyak senario aplikasi, seperti perdagangan masa nyata, pemantauan masa nyata dan permainan masa nyata. Saya harap artikel ini dapat membantu anda, dan saya harap anda boleh menggunakan FastAPI untuk membina aplikasi web yang lebih cekap dan masa nyata. 🎜

Atas ialah kandungan terperinci Cara menggunakan pemberitahuan tolak dalam FastAPI untuk mengemas kini data dalam masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn