python - Python:退避装饰没有捕捉到错误
问题描述
我正在尝试使用 tweepy 来处理 Twitter 的 api。我打算使用退避来轻松实现指数退避来处理速率限制错误。但是,退避似乎不会在发生速率限制错误时捕获它们。这是我的代码:
@backoff.on_exception(
backoff.expo,
tweepy.error.RateLimitError,
)
def page_followers(self, user, page_limit=-1):
for page in tweepy.Cursor(self._api.followers, id=user.id).pages(page_limit):
yield page
我的理解是,如果在应用后抛出 RateLimitError ,则退避应该重试backoff.expo
。
任何想法我做错了什么?
**编辑以修复标题
解决方案
它可能会捕获错误,但已达到最大重试次数,之后您将看到 RateLimitError 异常。使用 tweepy 的内置等待机制可能会更好:
self._api = tweepy.API(auth, wait_on_rate_limit=True)