首頁 > 後端開發 > Python教學 > 如何優化 FastAPI 中大型資料集的 JSON 回應時間?

如何優化 FastAPI 中大型資料集的 JSON 回應時間?

Susan Sarandon
發布: 2024-10-18 23:02:30
原創
886 人瀏覽過

How to Optimize JSON Response Times for Large Datasets in FastAPI?

最佳化FastAPI 中大型資料集的JSON 回應時間

問題:

從FastAPI 問題:

從FastAPI 端點明顯慢,大約需要端點明顯慢一分鐘。資料最初使用 json.loads() 從 parquet 檔案加載,並在返回之前進行過濾。尋求一種更快的方法來傳遞資料。

解:

反應時間緩慢源自於 parse_parquet() 函數中的多次 JSON 轉換。 FastAPI 會自動使用 jsonable_encoder 對回傳值進行編碼,然後使用 json.dumps() 對其進行序列化,這是一個耗時的過程。像 orjson 或 ujson 這樣的外部 JSON 編碼器可以提供潛在的速度增強。

但是,最有效的解決方案是避免不必要的 JSON 轉換。以下程式碼利用自訂 APIRoute 類別來啟用來自 pandas DataFrame 的直接 JSON 回應:

  • 此程式碼可讓您比較不同資料轉換方法的回應時間。使用具有160,000 行和45 列的範例parquet 文件,獲得以下結果:
  • 預設FastAPI 編碼器(json.dumps()): 最慢
  • orjson: 與預設編碼器相當
  • ujson: 比orjson 稍快

PandasJSON (df.to_json()):

PandasJSON (df.to_json()):

速度明顯更快為了改善使用者體驗,請考慮使用附件參數和檔案名稱設定Content-Disposition 標頭來啟動下載,而不是在瀏覽器中顯示資料。這種方法繞過了瀏覽器限制並加快了處理速度。 此外,Dask 提供了大型資料集的最佳化處理,提供了 pandas 的替代方案。在處理海量資料時,還可以考慮串流或非同步響應以避免記憶體問題。

以上是如何優化 FastAPI 中大型資料集的 JSON 回應時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板