Mempercepatkan Respons FastAPI untuk Data JSON Besar
FastAPI ialah rangka kerja berprestasi untuk membina API, tetapi ia boleh menghadapi kesesakan apabila mengembalikan jumlah yang besar daripada data JSON. Dalam senario ini, punca selalunya ialah penukaran data yang memakan masa ke dalam format JSON.
Pilihan 1: Pengekod JSON Tersuai (Kemas kini 2)
Penyelesaian terpantas terletak pada memintas pengekod JSON lalai FastAPI dan menggunakan pengekod yang lebih cekap seperti orjson atau ujson. Pertimbangkan coretan kod ini:
<code class="python">@app.get("/orjson") def get_data_orjson(): df = pd.read_parquet('data.parquet') return Response(orjson.dumps(df.to_dict(orient='records')), media_type="application/json")</code>
Pilihan 2: Direct Pandas JSON
Pendekatan yang lebih cekap ialah menggunakan penukaran JSON terbina dalam Pandas. Berikut ialah contoh:
<code class="python">@app.get("/pandasJSON") def get_data_pandasJSON(): df = pd.read_parquet('data.parquet') return Response(df.to_json(orient="records"), media_type="application/json")</code>
Pilihan 3: Penstriman Potongan
Untuk set data yang sangat besar, pertimbangkan penstriman potongan untuk mengelakkan masalah memori. Pandas menyediakan fungsi seperti read_csv atau read_parquet dengan parameter chunksize untuk pemprosesan data tambahan.
Pilihan 4: Dask DataFrame
Untuk data yang melebihi memori yang tersedia, perpustakaan Dask DataFrame boleh digunakan untuk memproses dan menukar data besar kepada JSON dengan cekap. Dask mendayakan pengiraan selari dan boleh mengendalikan set data besar-besaran yang boleh menyebabkan isu prestasi dalam operasi Pandas biasa.
Perbandingan Prestasi
Kod sampel yang disediakan membolehkan anda membandingkan prestasi pendekatan yang berbeza secara langsung. Laksanakan apl dan akses setiap titik akhir (/defaultFastAPIencoder, /orjson, /ujson, /pandasJSON) untuk melihat masa tindak balas.
Pertimbangan Tambahan
Besar Paparan: Jika data JSON bertujuan untuk dipaparkan pada sisi klien, ia mungkin kelihatan tertangguh. Ini disebabkan oleh had prestasi penyemak imbas dalam mengendalikan data yang luas.
Memuat Turun Data: Memudahkan muat turun data pengguna ialah penyelesaian yang lebih cekap. Anda boleh menggunakan pengepala Pelupusan Kandungan dalam respons untuk menunjukkan bahawa fail perlu dimuat turun.
Ringkasnya, mengoptimumkan masa tindak balas FastAPI untuk data JSON yang besar memerlukan pertimbangan yang teliti terhadap kaedah dan teknik penukaran data yang mengutamakan kecekapan dan kebolehskalaan.
Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Masa Respons FastAPI untuk Data JSON Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!