Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengoptimumkan Kelajuan Pengambilan Data JSON dalam FastAPI?

Bagaimana untuk Mengoptimumkan Kelajuan Pengambilan Data JSON dalam FastAPI?

DDD
Lepaskan: 2024-10-18 22:58:30
asal
621 orang telah melayarinya

How to Optimize JSON Data Retrieval Speed in FastAPI?

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>
Salin selepas log masuk

Pertimbangan Tambahan:

  • Strim Balas: Pertimbangkan untuk menggunakan respons strim jika mengendalikan set data yang sangat besar boleh menyebabkan masalah kehabisan ingatan.
  • Dask Library: Gunakan Dask untuk memproses sejumlah besar data dengan cekap. Tukar Dask DataFrame yang terhasil kepada Pandas DataFrame sebelum menggunakan .to_json().
  • Muat Turun Fail: Tetapkan pengepala Pelupusan Kandungan untuk menunjukkan bahawa respons harus dimuat turun sebagai fail, memintas kelewatan pemaparan penyemak imbas.

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!

sumber:php
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan