【问题标题】:Understanding the Twitter rate limit了解 Twitter 速率限制
【发布时间】:2015-08-05 04:01:17
【问题描述】:

我正在使用Tweepy 编写一个函数,该函数将返回一个大型 Twitter 帐户的所有关注者并将它们写入一个文件。我一直在阅读有关 Twitter 速率限制的信息,但它仍然不太有意义。文档说“每 15 分钟打 15 个电话,每 15 分钟打 180 个电话”。然而,当我在没有睡眠功能的情况下运行我的代码时,我设法在 twitter 打断我之前获得了大约 280 个名字。那么我实际上在这里打了多少电话?我的代码如下:

import tweepy
import time

auth = tweepy.OAuthHandler("...", "...")
auth.set_access_token("...", "...")
api = tweepy.API(auth)

f = open('output.txt', 'w')
timecount = 0
for user in tweepy.Cursor(api.followers, screen_name="NAME").items():
    timecount = timecount + 1
    if timecount == 200:    
        print "HOLD ON A SECOND!!!"
        #print api.rate_limit_status()
        time.sleep(60*15)
        timecount = 0   
    data = user.screen_name 
    print user.screen_name  
    print >> f, data   
f.close()

现在它在每 280 个名称之间等待 15 分钟,这似乎是有效的。显然,我希望它尽可能高效地运行。谁能帮我了解我打了多少电话我应该等多久?

【问题讨论】:

    标签: python twitter tweepy


    【解决方案1】:

    在这种情况下,数学非常简单,在 twitter 将你切断之前,你实际上发出了 14 个请求,但是你能够获取 280 个名称,因为 tweepy.Cursor(api.followers, screen_name="NAME") 是一个一次返回 20 个值的请求,这意味着你在一个请求中获取 20 个值,正如你提到的,你能够获取 280 个名称,这并不奇怪,因为 280/20 = 14 所以实际上你只发出了 14 个请求,而你只是迭代 280 个值以打印出名称等。请参阅documentation 了解更多详细信息。

    【讨论】:

    • 那么在这种情况下,我应该能够安全地提取 260 或 280 个名称,然后等待 15 分钟以避免速率限制器将我切断?
    • 您可以通过使用api.followers() 方法以更有效的方式执行此操作,该方法为单个请求返回 100 个值。参考文档以获取更多信息,就睡眠时间而言,您应该在达到速率限制后休眠 15 分钟。并尽可能安全地重复这种睡眠和取物行为,据我所知,不会产生任何不利影响。
    • 原来 Tweepy 文档不正确。每个请求默认为 20 个值,而不是 100。话虽这么说...您可以将请求大小更改为 200,这使世界变得与众不同。感谢您的帮助!
    【解决方案2】:

    我会在 cmets 中添加它,但我不能获得声誉和东西。不久前我有同样的问题。实际上,每个请求最多可以获取 5000 个用户名,这意味着每 15 分钟可以获得 75000 个关注者。只需将计数增加到 5000。该呼叫使用关注者/列表呼叫。这是link。

    【讨论】:

      猜你喜欢
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 2016-04-21
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 2015-07-09
      相关资源
      最近更新 更多