tweepy.TweepError 超出速率限制
tweepy.TweepError Rate Limit Exceeded
问题
我正在用 Python 一个 Tweepy 编写一个 Twitter 机器人。昨晚我成功地让机器人工作了,但是,在关注了 60 个人之后,机器人开始抛出一个错误 [{u'message': u'Rate Limit Exceeded', u'code': 88}]
。我知道我只被允许对 Twitter API 进行一定数量的调用,并且我发现 this link 显示了我可以对这些功能中的每一个进行多少次调用。检查我的代码后,我发现错误是在我说 for follower in tweepy.Cursor(api.followers, me).items():
的地方抛出的。在我发现的显示我收到多少请求的页面上,它说我每 15 分钟收到 15 个请求来吸引我的关注者。我已经等了一夜,今天早上我重试了代码,但是,它仍然抛出同样的错误。我不明白为什么 Tweepy 在我应该还有剩余请求时抛出 rate limit exceeded
错误。
代码
这是我抛出错误的代码。
#!/usr/bin/python
import tweepy, time, pprint
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)
me = api.me()
pprint.pprint(api.rate_limit_status())
while True:
try:
for follower in tweepy.Cursor(api.followers, me).items():
api.create_friendship(id=follower.id)
for follower in tweepy.Cursor(api.friends, me).items():
for friend in tweepy.Cursor(api.friends, follower.id).items():
if friend.name != me.name:
api.create_friendship(id=friend.id)
except tweepy.TweepError, e:
print "TweepError raised, ignoring and continuing."
print e
continue
我通过在交互式提示中键入内容找到了抛出错误的行
for follower in tweepy.Cursor(api.followers, me).items():
print follower
它给了我错误
**Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
for follower in api.followers(id=me.id):
File "C:\Users\Lane\AppData\Local\Enthought\Canopy\User\lib\site-packages\tweepy\binder.py", line 239, in _call
return method.execute()
File "C:\Users\Lane\AppData\Local\Enthought\Canopy\User\lib\site-packages\tweepy\binder.py", line 223, in execute
raise TweepError(error_msg, resp)
TweepError: [{u'message': u'Rate limit exceeded', u'code': 88}]**
API().followers
方法实际上是 GET followers/list
,每个 window 限制为 15 个请求(在下一个纪元之前)。每次调用 returns 20 用户列表 default,如果您达到限制超过错误,我确定经过身份验证的用户有更多超过 300 名粉丝。
解决方案是增加每次调用时接收到的用户列表的长度,以便在 15 次调用中可以获取所有用户。修改您的代码如下
for follower in tweepy.Cursor(api.followers, id = me.id, count = 50).items():
print follower
count
表示每个请求要获取的用户数。
count
的最大值可以是200,也就是说15分钟内,你只能拉取200 x 15 = 3000个粉丝,一般情况下够用了。
问题
我正在用 Python 一个 Tweepy 编写一个 Twitter 机器人。昨晚我成功地让机器人工作了,但是,在关注了 60 个人之后,机器人开始抛出一个错误 [{u'message': u'Rate Limit Exceeded', u'code': 88}]
。我知道我只被允许对 Twitter API 进行一定数量的调用,并且我发现 this link 显示了我可以对这些功能中的每一个进行多少次调用。检查我的代码后,我发现错误是在我说 for follower in tweepy.Cursor(api.followers, me).items():
的地方抛出的。在我发现的显示我收到多少请求的页面上,它说我每 15 分钟收到 15 个请求来吸引我的关注者。我已经等了一夜,今天早上我重试了代码,但是,它仍然抛出同样的错误。我不明白为什么 Tweepy 在我应该还有剩余请求时抛出 rate limit exceeded
错误。
代码
这是我抛出错误的代码。
#!/usr/bin/python
import tweepy, time, pprint
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)
me = api.me()
pprint.pprint(api.rate_limit_status())
while True:
try:
for follower in tweepy.Cursor(api.followers, me).items():
api.create_friendship(id=follower.id)
for follower in tweepy.Cursor(api.friends, me).items():
for friend in tweepy.Cursor(api.friends, follower.id).items():
if friend.name != me.name:
api.create_friendship(id=friend.id)
except tweepy.TweepError, e:
print "TweepError raised, ignoring and continuing."
print e
continue
我通过在交互式提示中键入内容找到了抛出错误的行
for follower in tweepy.Cursor(api.followers, me).items():
print follower
它给了我错误
**Traceback (most recent call last):
File "<pyshell#31>", line 1, in <module>
for follower in api.followers(id=me.id):
File "C:\Users\Lane\AppData\Local\Enthought\Canopy\User\lib\site-packages\tweepy\binder.py", line 239, in _call
return method.execute()
File "C:\Users\Lane\AppData\Local\Enthought\Canopy\User\lib\site-packages\tweepy\binder.py", line 223, in execute
raise TweepError(error_msg, resp)
TweepError: [{u'message': u'Rate limit exceeded', u'code': 88}]**
API().followers
方法实际上是 GET followers/list
,每个 window 限制为 15 个请求(在下一个纪元之前)。每次调用 returns 20 用户列表 default,如果您达到限制超过错误,我确定经过身份验证的用户有更多超过 300 名粉丝。
解决方案是增加每次调用时接收到的用户列表的长度,以便在 15 次调用中可以获取所有用户。修改您的代码如下
for follower in tweepy.Cursor(api.followers, id = me.id, count = 50).items():
print follower
count
表示每个请求要获取的用户数。
count
的最大值可以是200,也就是说15分钟内,你只能拉取200 x 15 = 3000个粉丝,一般情况下够用了。