Mengoptimumkan Kelajuan Pengambilan Data JSON dalam FastAPI
Pemulangan muatan JSON yang lembap daripada titik akhir GET FastAPI ialah isu yang berulang. Apabila menggunakan json.dumps() untuk menghantar data daripada fail menggunakan json.loads(), tindak balas sangat tertangguh. Walaupun data pemulangan boleh digunakan untuk menghantar data kepada pengguna, adakah terdapat pendekatan yang lebih cekap?
Masalah:
Saluran pemprosesan pada mulanya mengubah data menjadi JSON menggunakan panda' to_json () fungsi, kemudian memuatkannya ke dalam kamus dengan json.loads(), dan akhirnya menterjemahkannya kembali kepada JSON. Proses penukaran berbilang langkah ini memperkenalkan kependaman yang ketara.
Penyelesaian Cadangan:
Pertama, adalah penting untuk menyedari bahawa FastAPI menukar nilai pulangan kepada data yang serasi dengan JSON menggunakan jsonable_encoder, diikuti dengan bersiri menggunakan fungsi json.dumps() Python standard. Proses dua langkah ini diketahui lambat.
Pilihan 1: Gunakan Pengekod JSON Alternatif
Pertimbangkan untuk menggunakan pengekod JSON alternatif seperti orjson atau ujson. Pengekod ini mengatasi gabungan jsonable_encoder dan json.dumps() lalai.
Pilihan 2: Pulangan Terus bagi Respons Tersuai
Untuk prestasi optimum, gunakan kelas APIRoute tersuai dan kembalikan Respons objek. Ini memintas proses penukaran JSON lalai FastAPI.
<code class="python">from fastapi.routing import APIRouter, APIRoute class TimedRoute(APIRoute): ... app = FastAPI() router = APIRouter(route_class=TimedRoute) @router.get("/custom-response") def get_data(): df = pd.read_parquet('data.parquet') return Response(df.to_json(orient="records"), media_type="application/json") app.include_router(router)</code>
Pertimbangan Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Kelajuan Pengambilan Data JSON dalam FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!