問題:
從FastAPI 問題:
從FastAPI 端點明顯慢,大約需要端點明顯慢一分鐘。資料最初使用 json.loads() 從 parquet 檔案加載,並在返回之前進行過濾。尋求一種更快的方法來傳遞資料。
解:
反應時間緩慢源自於 parse_parquet() 函數中的多次 JSON 轉換。 FastAPI 會自動使用 jsonable_encoder 對回傳值進行編碼,然後使用 json.dumps() 對其進行序列化,這是一個耗時的過程。像 orjson 或 ujson 這樣的外部 JSON 編碼器可以提供潛在的速度增強。但是,最有效的解決方案是避免不必要的 JSON 轉換。以下程式碼利用自訂 APIRoute 類別來啟用來自 pandas DataFrame 的直接 JSON 回應:
PandasJSON (df.to_json()):
PandasJSON (df.to_json()):
速度明顯更快為了改善使用者體驗,請考慮使用附件參數和檔案名稱設定Content-Disposition 標頭來啟動下載,而不是在瀏覽器中顯示資料。這種方法繞過了瀏覽器限制並加快了處理速度。 此外,Dask 提供了大型資料集的最佳化處理,提供了 pandas 的替代方案。在處理海量資料時,還可以考慮串流或非同步響應以避免記憶體問題。以上是如何優化 FastAPI 中大型資料集的 JSON 回應時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!