簡體   English   中英

如何處理 Python API 中的速率限制

[英]How To Handle Rate Limiting In Python API

我正在向 Salesforce Marketing Cloud API 發出 SOAP 請求,以從總共有 1,000,000 條記錄的 object 中以 2500 條為一批檢索數據擴展 object 條記錄。 不幸的是,SDK 不是一個選項,因為與 DE 名稱長度有關的現有錯誤。 大約中途,運行正常后,我收到 500 響應,隨后失敗。 據我所知,這是由於節流造成的:

https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/rate-limiting-errors-codes.html

一般來說,在 API 請求中處理速率限制的好方法是什么? 您是否添加睡眠定時器以在后續通話之間提供更多時間。 或者您會捕獲 500 響應(或您收到的任何錯誤響應)然后從那里添加一個睡眠定時器嗎?

這是我第一次遇到這個問題,所以我很感激任何指導/資源,並且很樂意從那里進行測試。

首先,不要讓您的應用直接撥打 SOAP 電話。 相反,編寫一個實用程序庫,並讓應用程序始終通過它 go。

查閱文檔以了解相關的速率限制策略。 您需要知道每小時有多少請求是可以接受的。

您的圖書館應維護一個全局內存數據結構,該結構會記住最近的交易時間和計數。 也就是說,你應該知道你最近有多忙,以及你滑冰的速度限制的邊緣有多近。 如果你離得很近,考慮睡一會兒。 絕對記錄所有內容,並帶有時間戳。


在您引用的 URL 中,請注意第二個時間戳:

        <wsu:Created>2017-02-01T19:07:24Z</wsu:Created>
        <wsu:Expires>2017-02-01T19:12:24Z</wsu:Expires>

當您的圖書館最終收到錯誤響應時,它應該使用第二個(未來)時間戳來智能地選擇睡眠時間。 它告訴我們禁令何時解除——在那之前的嘗試只會白費。

睡眠時間略長於所需時間。 您的目標應該是始終保持略低於限制。


為此編寫單元/集成測試。 整個系統龐大而復雜。 您需要確信您了解它並且可以預測它的行為。 有時服務器端會發生變化,而您不希望這些變化造成您必須追蹤的難以診斷的Heisenbug

您需要有意觸發服務器端速率限制然后成功恢復的測試。 您還需要測試證明高交易率仍然略低於限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM