開發與網路
Rate Limit 速率限制是什麼?被擋下來的時候該怎麼辦
Rate Limit 速率限制是什麼?被擋下來的時候該怎麼辦
自動化流程跑到一半突然全部失敗,錯誤訊息看起來像斷線。查了半天才發現是被限流了。
速率限制不是故障,是設計。搞懂它的規則與應對方式,你的自動化才會從「偶爾爆掉」變成「穩定跑完」。
你將學到什麼
定義
服務端對單位時間內的請求次數或用量設上限,超過就先擋下來。
白話比喻
像餐廳的出餐量。不是不做你的單,是請你稍等一下再點。
跟誰容易搞混
跟吞吐量方向相反。吞吐量是你實際跑得多快,速率限制是別人允許你跑多快。
定義
Rate Limit 速率限制,是服務端對你設下的用量上限:單位時間內最多幾次請求、最多處理多少內容量。超過上限,請求就會被擋下來,回傳一個表示「請求太多」的錯誤。
常見的計算方式有兩類:一類看請求次數,例如每分鐘幾次;另一類看用量,例如每分鐘處理多少內容。很多服務兩種同時計算,任一項超過就擋。
額度通常綁在你的帳號或金鑰上,並依方案等級不同。同一支API Key 被多個程式共用,額度是一起算的,這也是很多人莫名其妙被擋的原因。
白話比喻
像熱門餐廳的出餐節奏。廚房一次只能出這麼多,不是不做你的單,是請你稍等再點。你如果一直催單,只會讓整個廚房更亂。
所以被擋下來的正確反應是等,不是重打。收到錯誤立刻重打,等於在櫃檯前面一直按鈴,通常會被擋得更久。
被擋下來時怎麼做才對?
| 情況 | 錯誤做法 | 正確做法 |
|---|---|---|
| 剛被限流 | 立刻重打同一個請求 | 等待後再重試,間隔逐次拉長 |
| 整批任務被擋 | 整批重跑一次 | 只補跑失敗的部分,並降低併發數 |
| 常態性超量 | 一直重試硬闖 | 改走批次、加快取,或申請提高額度 |
| 多個程式共用金鑰 | 各自全速呼叫 | 集中做流量控制,分配各自的配額 |
實際用例
最常見的踩雷情境是資料批次處理。一個迴圈跑三千筆,程式全速呼叫,前面幾百筆正常,之後整批失敗。表面看起來像服務不穩,其實是自己打太快。
解法有三層。第一層在程式裡限制併發數與呼叫頻率;第二層對失敗的請求做指數退避重試;第三層把不急的工作改走批次推論或排到離峰時段。三層做完,穩定度會完全不同。
另外提醒一件事:限流的錯誤訊息常常長得像網路問題。看到大量失敗時,先確認回應的狀態碼是不是限流,可以省下很多亂查的時間。
延伸學習
寫給升國一的你的筆記術
寫給剛升上國中的你:筆記不是寫給老師看的,是寫給考前的自己看的。18 章 85 課圖文,從「為什麼要寫」講到七科各自怎麼記,附 78 份可以印出來寫的練習單,以及 80 課家長專區與 34 張三年筆記養成路徑圖。沒有閱讀期限,國一買、國三還在。
NT$ 3,599
ChatGPT 很強,但真正讓你下班的是 Google
六小時完整實錄。從「AI 很厲害,為什麼你還是每天加班」這個問題出發,把 Google Workspace 當成真正的工作平台重新設計一次流程 ── Sheets 的資料結構、Drive 與 Docs 的文件流、Gmail 與 Calendar 的通知系統,再用 Apps Script 讓它自己跑起來,最後收斂成一張屬於你自己的 AI 工作能力地圖。
NT$ 4,599

