簡體   English   中英

在多進程API調用程序上應用速率限制/限制的最佳方法 - 使用Celery

[英]Best way to apply rate limit/throttling on multi processes API caller - using Celery

這是場景:
我有10個Celery工作者將HTTP請求(通過請求)發送到外部API服務器。 該API服務器的API速率限制為1000請求/秒。
我想要做的是讓我的API請求限制以避免達到速率限制。
我的第一個想法是為Celery工作者提供Redis,並在Redis上保留API請求的數量。 有沒有其他/最佳實踐來實現它?

謝謝!

Celery支持指數退避和異常的自動重試

如果您希望永遠不會收到429 Too Many Requests ,那么跟蹤您發出的API請求數量的方法是正確的。 它被稱為令牌桶 ,你可能會發現你的用例的通用實現,例如django-simplekeys聽起來就像你已經想到的那樣。

如果您為每個任務執行固定數量的API請求,則最簡單的方法是使用Celery rate_limit注釋您的任務。 它還在內部使用令牌桶。

暫無
暫無

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

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