Python 在tweepy中使用光标处理速率限制异常
在使用游标对象遍历跟随者列表时,我试图找到处理速率限制的正确方法。以下是我正在尝试的:Python 在tweepy中使用光标处理速率限制异常,python,tweepy,Python,Tweepy,在使用游标对象遍历跟随者列表时,我试图找到处理速率限制的正确方法。以下是我正在尝试的: while True: try: for follower in tweepy.Cursor(api.followers, id=root_usr).items(): print(follower.id) except tweepy.TweepError: # hit rate limit, sleep for 15 minutes
while True:
try:
for follower in tweepy.Cursor(api.followers, id=root_usr).items():
print(follower.id)
except tweepy.TweepError:
# hit rate limit, sleep for 15 minutes
print('Rate limited. Sleeping for 15 minutes.')
time.sleep(15 * 60 + 15)
continue
except StopIteration:
break
这可能是不正确的,因为异常会使
for
循环从头开始。在处理速率限制问题的同时,迭代所有root\u usr
的追随者的正确方法是什么?您可以在一个变量上构造Cursor
实例,并在try catch中调用next(Cursor)
。你可以用这种方式处理StopIteration和TweepError
像
下面有一个示例建议使用包装器函数来处理错误处理
def limit_已处理(光标):
尽管如此:
尝试:
下一步(光标)
除tweepy.RateLimitError外:
时间。睡眠(15*60)
除停止迭代外:
打印(“完成”)
打破
对于限制中的跟随者(tweepy.Cursor(api.followers,id=root\u usr.items()):
打印(follower.id)
另外,我建议将count设置为max,
tweepy.Cursor(api.followers,id=root\u usr,count=200).items()
,以充分利用每个api调用。for循环应该在try/except子句之上,这样它就可以在每个用户级别上进行尝试,而不是在整个循环上进行尝试,但它不是tweepy.Cursor吗(api.followers,id=root\u usr).items()
将引发异常?
cursor = tweepy.Cursor(api.followers, id=root_usr).items()
# or tweepy.Cursor(api.followers, id=root_usr).items().iter()
while True:
try:
follower = next(cursor)
print(follower.id)
except StopIteration:
break
except tweepy.TweepError:
# Handle this, sleep, log, etc.
pass