Description
Day 2, 13:00-13:45
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
想透過本次演講告訴大家的內容 ASGI架構是什麼?FastAPI是什麼?是如何應用Async? 藉由實際痛點(mutli-thread、mutli-process issue)案例-房屋估價模型服務分析Flask與FastAPI開發上相異之處,以及這樣的相異之處對開發上的影響 非同步框架帶來好處的同時,使用上所需的注意事項 實際房屋估價模型服務轉換前轉後的數據比較 除了效能以外,FastAPI所帶來的好處 轉換上的心路歷程 本次使用的相關工具 FastAPI Flask
Slides not uploaded by the speaker. HackMD: https://hackmd.io/@pycontw/2021/%2F%40pycontw%2Frk6Kg4cfY
Speaker: 陳家丞
Intelligent System Engineer at E.SUN Bank. Like to study python Web Framework, e.g., Flask、FastAPI.