适应Python Twython中的Twitter速率限制

时间:2014-12-12 18:59:39

标签: python api twitter twython

我使用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的速率限制有关 - 还有另外一种方法吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

del twitter

而不是

twitter.disconnect()

我有同样的问题,它对我有用