終於完賽啦!
這系列文章原本是想說要圍繞著 AI 服務去做撰寫,盡可能把開發 AI 應用服務所需要掌握的技術與知識分享給大家。但寫著寫著,又覺得好像 AI 的部分也不是很多,反而比較像是 FastAPI 通用的教學 (但又沒那麼基礎XD),想來想去,就還是維持原本所設想的主題了。
這系列文章分成 3 個篇章:
這是花最多天討論的篇章了!為了能順暢地解釋 def 與 async def,前面花了 5 天 (03 - 07) 來把一些 Python 基礎的觀念給介紹一遍。接著,就是介紹協定 (WSGI、ASGI) 與伺服器,再帶到只有 ASGI 才有的 Lifesapn。最後,就是很常會使用到的 StreamingResponse。
有了前面的基礎知識後,就可以開始介紹一些我覺得比較進階一點的東西。
DB 的部分算是快速帶過而已,主要是想提一下非同步的操作而已。接著就是比較重要的任務管理,從基本的 Background Task,再到稍微複雜一點的 Thread Pool,最後是最複雜但也最實用的任務佇列,並提供一個簡單的 Celery 範例來讓大家知道任務佇列的厲害之處。
既然有任務,就免不了需要去思考發生錯誤時的對應處理,避免造成服務的中斷,同時也要提供一點資訊或留下點紀錄,讓開發者或是使用者可以知道到底發生了什麼。此外,如果這些任務需要花費較長時間才能完成,那麼讓前端知道任務進度也是一件很重要的事情。
在這個篇章,舉了幾個我在公司有遇過的且覺得常見的需求,希望透過簡單的範例,來分享應該怎麼去建構這樣的服務。當然,這是簡化許多的版本,實際需求往往複雜很多,不過,還是希望各位能從這些範例,學會如何把各種 FastAPI 相關的功能組合起來,搭建出你們所想要的服務~
最後,讓我們回過頭來看一下我們在 Day 01 所提到的問題,不知道各位是否已經知道該怎麼回答這些問題了XD
這系列文章應該都有涵蓋到這些問題,因此我就不提供答案了 (⁰▿⁰)
今年是第三年參加了,原本期待今年也會有 Python 組,沒想到只出現去年一次而已,所以只好改成參加這個超熱門的 Software Development 組。
我覺得寫鐵人賽文章最有趣的地方是在想題目和規劃架構。主題太大會寫不完,太小的話一下就沒梗了;內容太獨立的話,會覺得前後沒有連貫,不像是同一個系列的文章;內容太相近的話,又會覺得應該放在同一天。8 月真的花了很多時間思考如何切分內容、怎麼安排順序。
另外,我覺得 Roadmap 也是很有趣的東西。這個東西到底有沒有用我其實也不知道,但有一個圖形化的目錄看了就比較舒服。原本是想要做的跟技能樹一樣 (必須先把基礎技能點起來,才能點進階技能),也想要做的跟主線支線任務一樣 (知道哪些是必須要會的,哪些是錦上添花的)。但實際規劃後,覺得實在很難畫出完美的圖,就變成現在這個樣子了,希望之後有機會可以畫出我心目中完美的 roadmap XD
這次參賽,重新整理我對 FastAPI 的認識,也順便把以前沒好好搞清楚的東西給弄懂了。最後,如果大家對文章內容有疑問,歡迎大家來討論~
希望這系列的文章有幫助到大家~