配額與速度限制指南

Fedex API 設有三種節流機制:配額、速度限制,以及閾值。

配額

交易配額是組織在一天之內可提交之 API 請求的數量上限。換言之,API 消費者應考慮其組織所有項目發起的 API 請求總數。不論 FedEx API 回應發回的數據量多寡,每個請求都是同等計算的。

例如:組織的配額為每日 500,000 個 API 請求。在一日當中的頭幾個小時,該組織提交了 500,000 個請求,達到了每日配額。在當天其餘時間,直至翌日為止,每個請求都會發回錯誤代碼「429 – 請求過多 – 超出每日交易配額。請在 12:00AM GMT 後再試」。

速度限制

每個項目都設有交易速度限制,10 秒鐘內最多有 1400 個交易。如果在每個 10 秒鐘時間範圍內超出此交易上限,便會套用節流限制措施。

如果在頭數秒內已達到這個限制,則 10 秒範圍內其餘秒數傳送的任何交易將被節流。在此節流期間,將傳回錯誤代碼「429 – 請求過多」。

如果 FedEx 在頭 2 秒內收到 1400 個請求,則接下來 8 秒的任何後續交易將被節流,並發出錯誤訊息「429 – 請求過多 – 我們在短時間內收到太多請求。請稍等一會,然後再嘗試。」

10 秒鐘過去後,節流限制將會撤除,另一個計數器會開始追蹤接下來 10 秒內的請求數量。

閾值

閾值會在 IP 地址層級套用,以維持 FedEx API 授權流程的彈性。此機制僅適用於 OAuth 令牌生成服務。閾值共有兩類:

  1. 突發閾值:每秒 3 次點擊,在 5 秒鐘內持續
  2. 平均閾值:每秒 1 次點擊,在 2 分鐘內持續

當公共 IP 位址超出任何上述閾值限制時,該等 IP 位址將被罰停 10 分鐘,如果在這 10 分鐘期間出現任何進一步的請求,將收到「403 禁止」狀態代碼。

如 API 消費者在罰停時間內,繼續超出任何閾值限制,則罰停時間將會延長。API 用戶只要在接下來 10 分鐘不超出閾值限制,即可結束罰停時間。

閾值機制以用戶的公共 IP 位址為基礎。如用戶在一個公共 IP 背後,設置了 10 個虛擬機事例,則所有來自該 IP 位址的請求都會計算入閾值限制內。

流量管理

這三項機制分別應對流量管理的某個獨特範疇:

  • 配額會在組織層級套用,即:組織內所有 API 產生的綜合流量,將受此交易配額限制。

  • 運費限制會在項目層級套用,即:項目內所有 API 產生的綜合流量將受此速度限制約束。

  • 閾值會在 IP 地址層級套用。

備註:FedEx 可能會下調上述任何節流機制的限制,以防止誤用、過量使用及濫用情況。FedEx 保留在不事先通知的情況下更改分配的權利,以維持 API 消費者之間的均等存取,以及有效地分配 FedEx 資源。


常見問答

同一個組織之下,來自不同項目的所有 API 交易都會算入配額中嗎?
配額是在組織層級套用的。在同一個組織下,您可以有一個或以上的項目;在每個項目下,則可以有一個或以上的 API。因此,來自不同項目之所有 API 生成的綜合流量 — 全部屬於同一個組織 — 都會算入每日配額中。

如果超出配額和速度限制均發回了相同的 429 錯誤,我如何識別是違反了哪個?
您可以閱讀錯誤訊息以識別實際違反事項。

違規 錯誤訊息
配額 請求過多 – 超出每日交易配額。請在 12:00AM GMT 後再試。
速度限制 我們在短時間內收到了太多請求。請稍等一會,然後再嘗試。

超出閾值限制的解決方法是?
OAuth 令牌的有效期為一小時。我們建議 API 消費者在整個小時內使用該令牌,然後等到令牌逾期後,再請求新的令牌。

有沒有超出閾值限制的例子?
5 秒和 2 分鐘分別是突發閾值和平均閾值的觀察期。在這些觀察期間,如果某個 IP 位址超出了這兩項閾值限制之一,便會受到閾值懲罰。

例如:如果某個 IP 位址每秒有 3 次點擊,持續 2 秒,然後點擊率跌至每秒 3 次點擊以下,則不算超出突發閾值。然而,若 IP 位址每秒有 3 次點擊,持續 5 秒 (例如:維持此點擊率時,5 秒內至少有 15 次點擊),則屬於超出突發閾值。