首页 > 解决方案 > 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

任何想法我做错了什么?

**编辑以修复标题

标签: pythontwittertweepy

解决方案


它可能会捕获错误,但已达到最大重试次数,之后您将看到 RateLimitError 异常。使用 tweepy 的内置等待机制可能会更好:

self._api = tweepy.API(auth, wait_on_rate_limit=True)

推荐阅读