当我再次进行GET调用时,get_rate_status“剩余命中数”不会减少

时间:2013-01-14 21:06:28

标签: python twitter tweepy

我编写了一个脚本来遍历Twitter用户ID列表,并将follower_ids列表保存到文件中。我已经多次使用它没有问题。对于长列表,我已经添加了这段代码来检查每个GET请求之前的速率限制,如果我要进行速率限制则会睡眠:

rate_limit_json = api.rate_limit_status()
 remaining_hits = rate_limit_json["remaining_hits"]
 print 'you have', remaining_hits, 'API calls remaining until next hour'
 if remaining_hits < 2:
      dtcode = datetime.utcnow()
      unixtime = calendar.timegm(dtcode.utctimetuple())
      sleeptime = rate_limit_json['reset_time_in_seconds'] - unixtime + 10
      print 'waiting ', sleeptime, 'seconds'
      time.sleep(sleeptime)
 else:
      pass

我在脚本的顶部设置了这个Oauth blurb:

auth = tweepy.OAuthHandler('xxxx', 'xxxx')
auth.set_access_token('xxxx', 'xxxxx')
api = tweepy.API(auth)

我反复提出的电话是:

follower_cursors = tweepy.Cursor(api.followers_ids)

所以现在,无论我拨打多少电话,我的“剩余点击”都会保持在150,直到Twitter返回“超出限额。客户每小时可能不会超过350个请求。”

似乎速率限制检查程序报告了我的未经授权的IP地址的速率限制(150),但是我的呼叫正在计算我的应用程序的速率限制(350)。

如何调整我的速率限制检查程序以实际检查应用程序的速率限制?

1 个答案:

答案 0 :(得分:0)

重复创建Cursor实例不会消耗任何API引用,因为它实际上并未向twitter发出请求。 Cursor只是围绕不同分页方法的Tweepy包装器。调用nextprev方法迭代它会导致实际的API调用。

Twitter不再具有未经身份验证的API调用的概念(v1.1 API始终需要身份验证)。我认为问题在于您使用Cursor。尝试只创建一次实例,并重复调用next方法(确保捕获StopIteration异常,因为next是生成器。)