处理 Twitter 速率限制
Dealing with Twitter Rate Limit
我有一个看似简单的问题,我正在努力寻找解决方案。我有一个包含 ~3,000 个推文 ID 的列表,我希望从中获得转发次数、点赞次数和用户的关注者数量。
为此,我编写了以下代码:
def chunks(l, n):
# For item i in a range that is a length of l,
for i in range(0, len(l), n):
# Create an index range for l of n items:
yield l[i:i+n]
tweets = []
id = list(chunks(listOfTwitterIDs, 100))
for each in id:
tweets.append(api.statuses_lookup(each, map=true))
但是,这将超出 Twitter 的速率限制。当我达到速率限制时,如何引入 15 分钟的等待时间?
tweepy API 有一个 wait_on_rate_limit
参数,默认设置为 False
。
tweepy docs 代码片段中提供了使用游标处理速率限制的另一个示例。
def chunks(l, n):
# For item i in a range that is a length of l,
for i in range(0, len(l), n):
# Create an index range for l of n items:
yield l[i:i+n]
tweets = []
id = list(chunks(listOfTwitterIDs, 100))
for each in id:
# try to get get # of retweets
try:
tweets.append(api.statuses_lookup(each, map=true))
# If it fails, wait 15 mins and 1 sec (just to be safe) and try again
except:
sleep(901)
tweets.append(api.statuses_lookup(each, map=true))
我有一个看似简单的问题,我正在努力寻找解决方案。我有一个包含 ~3,000 个推文 ID 的列表,我希望从中获得转发次数、点赞次数和用户的关注者数量。
为此,我编写了以下代码:
def chunks(l, n):
# For item i in a range that is a length of l,
for i in range(0, len(l), n):
# Create an index range for l of n items:
yield l[i:i+n]
tweets = []
id = list(chunks(listOfTwitterIDs, 100))
for each in id:
tweets.append(api.statuses_lookup(each, map=true))
但是,这将超出 Twitter 的速率限制。当我达到速率限制时,如何引入 15 分钟的等待时间?
tweepy API 有一个 wait_on_rate_limit
参数,默认设置为 False
。
tweepy docs 代码片段中提供了使用游标处理速率限制的另一个示例。
def chunks(l, n):
# For item i in a range that is a length of l,
for i in range(0, len(l), n):
# Create an index range for l of n items:
yield l[i:i+n]
tweets = []
id = list(chunks(listOfTwitterIDs, 100))
for each in id:
# try to get get # of retweets
try:
tweets.append(api.statuses_lookup(each, map=true))
# If it fails, wait 15 mins and 1 sec (just to be safe) and try again
except:
sleep(901)
tweets.append(api.statuses_lookup(each, map=true))