iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0
Modern Web

FastAPI 如何 Fast ? 框架入門、實例、重構與測試系列 第 30

[Day30] FastAPI 系列:山重水複疑無路,柳暗花明又一村

  • 分享至 

  • xImage
  •  

[Day30] FastAPI 系列:山重水複疑無路,柳暗花明又一村

來不及在 iThome 鐵人賽關版前寫完的文章

都會放放在 Github Repo 上,有興趣的可以去看看 !

後來發現還可以發 XD
也補在 iThome 了 !

回顧

在 30 天的鐵人賽,我們完成了以下的內容

基礎功能

  • FastAPI 基本用法 : 以 FastAPI 來實作基本 RESTful API
  • Databse Injections : 以 SQLAlchemy 作為 ORM 來操作資料庫
  • 以 Pytest 撰寫 Unit Test 和 Benchmark
  • 以 Docker + Docker Compose 來部署專案

架構實作

  • OAuth2 + JWT 實作 : 以 OAuth2 + JWT 來實作登入機制
  • 以 Redis 作為 Server Side Cache : 實作 Key-Value Cache 和 Pagenation Cache
  • 實作 Primary Replica 架構 : 以 Read-Write Splitting 和 Read-Only Replica 來提升 Query 效能
  • 實作 Event Driven 架構 : 以 Celery + Redis 作為 Message Broker 來實作非同步任務
  • 實作 Rate Limit Middleware : 以 Redis 作為 Rate Limit 的資料儲存

在 Day01 ~ Day09 : 介紹 FastAPI 的基本用法

在 Day10 ~ Day16 : 在 FastAPI 中使用 SQLAlchemy 和 Depends injection

在 Day17 ~ Day20 : 實作 OAuth2 + JWT 登入機制

在 Day21 ~ Day23 : 以 Pytest 來撰寫 Unit Test 和 Docker Compose 來部署專案

在 Day24 ~ Day26 : 以 Redis 實作 Server Side Cache

在 Day27 ~ Day29 : 實作 Primary Replica 架構

在 Day31 ~ Day33 : Event Drive 與 Rate Limit 實作

來不及在 iThome 鐵人賽關版前寫完的文章
都會放放在 Github Repo 上,有興趣的可以自行閱讀 !

總結

原本是 10/16 就會結束的鐵人賽
其實到今天 ( 12/06 ) 才正式寫完 TAT

在開賽前,我其實只有囤不到 10 篇的文章
接下來都是盡可能一天生一篇

但是每篇包含 code 大概都落在 3000~5000 字
還有在新功能實作時,多少會遇到一些 bugs
後期的文章都只能拿以前的文章先貼上去

還有在最後 5 篇文章時,想不太到也寫什麼 ( 之前規劃的內容都寫完了 )
也花了快一兩週來看其他文章、學新技術、找主題

在實作也遇到蠻多出乎意料的問題

  • 在處理 async genrator 時:發現需要透過 asynccontextmanager 才能正確的 yield 出 AsyncSession
  • 以 Redis 實作 Pagenaion Cache 時:發現後端再處理資料合併時效率太低,用其他寫法才達到預期的效果
  • 實作 Primary Replica 架構時:發現以 random.choice 來選擇 Replica 會倒致效率低落,改用以 bitwise 實現 round-robin 才達到預期的效果

像是在處理 Pagenaion Cache 和 Primary Replica 架構問題時
都分別花 3 天到 1 週才通靈出關鍵點

在這兩個月的時間
除了正式完成 iThome 鐵人賽
也在 10 月打 NCPC 決賽ICPC 桃園站ITSA 決賽
11 月 在 MOPCON 講議程、參加 臺北程式節黑客松聽 Coldplay演唱會
是個非常充實的兩個月!

About Me

我是劉哲佑
目前就讀成大資工大二
目前往 Fullstack 偏 Backend + DevOps 的方向發展 !

以下是我的聯絡方式:


上一篇
[Day29] FastAPI : Refactoring & CROS 設定
下一篇
[Day31] Message Queue 初探(1) : 以 Redis 作為 Message Queue 執行 Speech Recognition
系列文
FastAPI 如何 Fast ? 框架入門、實例、重構與測試31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言