【问题标题】:Accommodating Twitter's rate limit in Python's Twython在 Python 的 Twython 中适应 Twitter 的速率限制
【发布时间】:2017-02-20 02:03:57
【问题描述】:

我正在使用 Twython 通过 Twitter 的 REST API 提取数据。 我希望代码在达到 Twitter 速率限制时自动休息,然后再开始查询。

以下是代码,它获取 Twitter ID 列表并将其关注者的 ID 添加到列表中:

for user in first_ids:
    try:
        followers = twitter.get_followers_ids(user_id=user, count=600)
        for individual in followers['ids']:    
            if individual not in ids:
                ids.append(individual)
    except TwythonRateLimitError as error:
        remainder = float(twitter.get_lastfunction_header(header='x-rate-limit-reset')) - time.time()
        time.sleep(remainder)
        continue

当我运行它时,我收到以下错误:“连接中止。错误 10054:现有连接被远程主机强行关闭”

错误是什么意思?我想这与 Twitter 的速率限制有关——还有其他方法可以解决吗?

【问题讨论】:

  • 哪一行报错了?
  • 这是我贴的第三行——尝试下的第一个请求。在错误出现之前,我可以获得大约 4500 个 ID
  • 不确定这是否是您的问题,但每个光标页面只允许 200 个

标签: python api twitter twython


【解决方案1】:

您在程序休眠时保持连接打开,请尝试手动关闭它,然后在休眠超时后再次连接。比如:

    except TwythonRateLimitError as error:
        remainder = float(twitter.get_lastfunction_header(header='x-rate-limit-reset')) - time.time()
        twitter.disconnect()
        time.sleep(remainder)
        twitter = Twython(APP_KEY, APP_SECRET,OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
        continue

【讨论】:

  • 对不起,我应该澄清一下,我使用的是 REST API,而不是 Streaming
  • 它给了我这个错误AttributeError: 'Twython' object has no attribute 'disconnect'
【解决方案2】:

如果您使用的是 REST api,您可以使用相同的解决方案删除 api 而不是使用 .disconnect() 只需使用

del twitter

而不是

twitter.disconnect()

我遇到了同样的问题,它对我有用

【讨论】:

  • 你为什么不在达到速率限制之前放一个 sleep() ?
猜你喜欢
  • 1970-01-01
  • 2015-04-21
  • 2012-01-20
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 2011-11-16
相关资源
最近更新 更多