利用大數據提高 FastAPI 中 JSON 回應的效能
FastAPI 用戶在透過端點傳回大量 JSON 資料時遇到嚴重延遲。全面的解決方案涉及解決多個因素,包括資料檢索、序列化和客戶端顯示。
資料提取和讀取
如範例程式碼中突出顯示的,資料最初使用Pandas 的read_parquet() 函數從Parquet 檔案中提取數據,該函數將資料轉換為Pandas DataFrame。為了提高效率,請考慮使用專為處理大型資料集而設計的替代庫,例如 Dask。 Dask 的 read_parquet() 方法可以顯著提高資料讀取速度。
JSON 序列化
後續的 JSON 序列化步驟被證明是主要的性能瓶頸。預設情況下,FastAPI 使用 Python 的標準 json.dumps() 函數,導致效能不佳。為了加速這個過程,可以使用 orjson 或 ujson 等替代 JSON 編碼器,從而大大減少序列化時間。
響應類型優化
在某些情況下,返回 Pandas DataFrame由於 DataFrame 和 JSON 輸出的 RAM 分配,JSON 響應可能會導致內存問題。要解決這個問題,請考慮使用 df.to_json() 而不指定檔案路徑,它將 JSON 輸出直接串流到客戶端,而不將其儲存在記憶體中。
客戶端顯示
即使採用優化的序列化技術,在客戶端瀏覽器上顯示大量資料也會因資料解析和渲染而引入額外的延遲。為了緩解這種情況,請探索如此提供下載連結而不是瀏覽器內顯示等選項,從而將資料處理卸載到客戶端電腦。
透過實施這些技術,開發人員可以顯著提高 FastAPI 端點返回的性能海量JSON數據,保證快速響應、高效的用戶體驗。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3