我正在尝试找到一种方法,在tweepy中创建一个剩余限制,以便处理twitter API发送的剩余限制错误。我使用以下代码:
limits = myapi.rate_limit_status()
remain_search_limits = limits['resources']['search']['/search/tweets']['remaining']
print remain_search_limits
print limits
实际上上面的代码打印出来了:
179
{u'rate_limit_context': {u'access_token': u'179927437-vtHojLnksgUD3FfnueTWVag62Kx5mvAA3uhX7qd7'}, u'resources': {u'account': {u'/account/verify_credentials': {u'reset': 1399886205, u'limit': 15, u'remaining': 0}, u'/account/settings': {u'reset': 1399886857, u'limit': 15, u'remaining': 15}}, u'blocks': {u'/blocks/list': {u'reset': 1399886857, u'limit': 15, u'remaining': 15}, u'/blocks/ids': {u'reset': 1399886857, u'limit': 15, u'remaining': 15}}, u'users': {u'/users/contributors': {u'reset': 1399886857, u'limit': 15, u'remaining': 15}, u'/users/lookup': {u'reset':
奇怪的问题是,每次打印的时候,我都会得到179个答案。在我能够再次从twitter获取数据之前,我应该使用什么来进行眨眼?
我的最终代码如下:
limits = api.rate_limit_status()
remain_follower_limits = limits['resources']['followers']['/followers/ids'] ['remaining']
with open("ids.txt") as f:
content = f.readlines()
ids = []
for page in tweepy.Cursor(api.followers_ids, user_id="dankanter").pages():
while remain_follower_limits >4:
limits = api.rate_limit_status()
remain_follower_limits = limits['resources']['followers']['/followers/ids']['remaining']
ids.extend(page)
else:
time.sleep(60)
print ids
print len(ids)
然而,有时它会在循环中插入行限制= api.rate_limit_status()。在用户拥有数百万用户的情况下,它仅返回实际上非常小的子集。
答案 0 :(得分:2)
[总结,澄清和阐述初始帖子中的评论主题]
我得到相同的值...除非/直到我调用myapi.search
,之后返回更低的值。
limits['resources']
包含不同资源系列的字典列表(API调用类型):
['account', 'blocks', 'users', 'friends', 'help', 'saved_searches', 'lists', 'search', 'application', 'trends', 'followers', 'favorites', 'friendships', 'geo', 'direct_messages', 'statuses', 'mutes']
。
与资源族相关联的每个词典包括表示与该族相关联的特定方法的一个或多个键。反过来,每个键的值都是带有'limit'
,'remaining'
和'reset'
键的字典。
application/rate_limit_status方法的文档描述如下:
此方法使用属于族的方法映射进行响应 由resources参数指定,当前剩余的用途 当前速率限制窗口中的每个资源,以及 它在历元时间的到期时间。它还包括一个 rate_limit_context字段,指示当前访问令牌或 仅应用程序身份验证上下文。
由于limits['resources']['search']['/search/tweets']['remaining']
表示您可以进行的剩余搜索呼叫,只要此数字大于零,您就可以继续进行其他search
次呼叫;当它达到零时,您需要等待额外的通话,直到达到reset
时间(Epoch format}。
关于后续评论,limits['resources']['followers']
资源系列包含方法'/followers/ids'
和'/followers/list'
的密钥,可以使用相同的模式访问'remaining'
个调用至于search
。
您可以在此主题中找到一些其他有用的信息:Return the number of remaining hits tweepy