陳家丞
Abstract
過往在使用Python開發API的時候,基於WSGI架構下,運算中遇到IO bound時,可以透過多線程去處理,但遇到cpu bound時,多線程並不是一個好的選擇,因為線程會受限於GIL,並不會有效提升效能,而當遇到運算請求量較大時,為了因應大量的運算請求,可以透過多進程來彌補多線程的不足,但同時也需要承擔過多的資源消耗以及考慮Inter-Process Communication overhead。 而這些問題在FastAPI得到了救贖,FastAPI是一個建立在ASGI架構下的Web框架,以Python所提出的非同步概念為基礎,透過Coroutine的方式,去提高CPU運算效率,去改善多線程、多進程對於cpu bound遇到的問題。 本次演講主要透過房屋估價模型服務程式碼的解說,分享如何從過去使用的Flask框架,轉換為FastAPI框架。透過非同步的設計,即使有GIL的限制,仍舊能夠透過單線程去達到類似多進程的運算效能,減少開啟多進程造成的資源耗費過多。此外,透過程式碼,說明這兩個框架開發上的不同之處,以及轉換過程中曾經遇到的問題,讓想使用FastAPI但還在觀望的人能夠有參考方向,減少未來使用時踩雷的機會!
Description
Video
陳家丞
Intelligent System Engineer at E.SUN Bank. Like to study python Web Framework, e.g., Flask、FastAPI.