Apabila membuat klien pemberitahuan yang memerlukan sambungan awal , adalah penting untuk mencari cara yang cekap untuk menggunakannya merentas semua titik akhir untuk mengelakkan kelewatan prestasi. Kami membentangkan dua pendekatan yang berpotensi untuk menangani senario ini.
Menggunakan atribut app.state, seseorang boleh menyimpan objek kelas tersuai di luar fail utama. Ini membolehkan untuk mengakses klien pemberitahuan melalui objek Permintaan, walaupun semasa bekerja dengan submodul yang menggunakan APIRouter. Adalah mungkin untuk memulakan objek menggunakan sama ada acara permulaan yang telah tidak digunakan lagi atau fungsi jangka hayat.
from fastapi import FastAPI, Request from contextlib import asynccontextmanager @asynccontextmanager async def lifespan(app: FastAPI): app.state.n_client = NotificationClient() yield app.state.n_client.close() app = FastAPI(lifespan=lifespan) @app.get('/') async def main(request: Request): n_client = request.app.state.n_client # ...
Dengan pengenalan pengendali jangka hayat Starlette, pemulaan dan penggunaan objek boleh diuruskan dalam keadaan permintaan. Pengendali ini juga menyediakan fungsi permulaan dan penutupan. Dengan menambahkan objek yang dimulakan pada kamus keadaan, ia boleh diakses dalam titik akhir menggunakan request.state.
from fastapi import FastAPI, Request from contextlib import asynccontextmanager @asynccontextmanager async def lifespan(app: FastAPI): n_client = NotificationClient() yield {'n_client': n_client} n_client.close() app = FastAPI(lifespan=lifespan) @app.get('/') async def main(request: Request): n_client = request.state.n_client # ...
Kedua-dua pendekatan menawarkan berkesan penyelesaian untuk menggunakan semula objek atau pembolehubah global dalam titik akhir FastAPI. Pilihan yang paling sesuai dengan aplikasi tertentu bergantung pada keperluan dan seni bina khusus.
Atas ialah kandungan terperinci Bagaimana untuk Memulakan dan Menggunakan Semula Objek Global dengan Cekap Merentas Semua Titik Tamat FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!