响应状态代码为 429 的 Tweepy 错误
Tweepy error with response status code 429
我正在使用 tweepy API 提取推文并将其显示在网页上。虽然我每 1 小时自动刷新一次代码以提取推文,但在连续约 24 小时的代码 运行 后,我最终得到以下 TweepError。
错误:
tweepy.error.TweepError: Twitter error response: status code = 429
我了解到此代码暗示对 API 的请求过多。有什么办法可以处理这个错误吗?我什至尝试将刷新率间隔增加到 2 小时,但似乎仍然不起作用。
下面是提取推文并存储在 CSV 中的代码:
def extract_tweet(self):
consumer_key = 'XXX'
consumer_secret = 'XXX'
access_token = 'YYY'
access_token_secret = 'YYY'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
csvFile = open('HELLOTWITTER.csv', 'w', newline='', encoding='utf-8')
csvWriter = csv.writer(csvFile)
for tweet in tweepy.Cursor(api.search,q="#cybersecurity OR #InfoSec", since="2017-10-20",lang="en").items(10):
csvWriter.writerow([tweet.text, tweet.created_at])
csvFile.close()
我查看了 API 文档并偶然发现了 wait_on_rate_limit,但不明白这是否是解决此错误的方法。
请帮忙!谢谢
有几个选项可以实现重试装饰器。重试装饰器查看方法中是否引发异常。以下示例使用指数退避重试。这将在每次重试之间等待 2^x * 1000 毫秒,最多 10 秒,然后是 10 秒,其中 x 是重试次数。
from retrying import retry
@retry(wait_exponential_multiplier=1000, wait_exponential_max=10000)
def extract_tweet(self):
consumer_key = 'XXX'
consumer_secret = 'XXX'
access_token = 'YYY'
access_token_secret = 'YYY'
try:
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
csvFile = open('HELLOTWITTER.csv', 'w', newline='', encoding='utf-8')
csvWriter = csv.writer(csvFile)
for tweet in tweepy.Cursor(api.search,q="#cybersecurity OR #InfoSec", since="2017-10-20",lang="en").items(10):
csvWriter.writerow([tweet.text, tweet.created_at])
csvFile.close()
except tweepy.error.TweepError:
raise
我正在使用 tweepy API 提取推文并将其显示在网页上。虽然我每 1 小时自动刷新一次代码以提取推文,但在连续约 24 小时的代码 运行 后,我最终得到以下 TweepError。 错误:
tweepy.error.TweepError: Twitter error response: status code = 429
我了解到此代码暗示对 API 的请求过多。有什么办法可以处理这个错误吗?我什至尝试将刷新率间隔增加到 2 小时,但似乎仍然不起作用。
下面是提取推文并存储在 CSV 中的代码:
def extract_tweet(self):
consumer_key = 'XXX'
consumer_secret = 'XXX'
access_token = 'YYY'
access_token_secret = 'YYY'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
csvFile = open('HELLOTWITTER.csv', 'w', newline='', encoding='utf-8')
csvWriter = csv.writer(csvFile)
for tweet in tweepy.Cursor(api.search,q="#cybersecurity OR #InfoSec", since="2017-10-20",lang="en").items(10):
csvWriter.writerow([tweet.text, tweet.created_at])
csvFile.close()
我查看了 API 文档并偶然发现了 wait_on_rate_limit,但不明白这是否是解决此错误的方法。 请帮忙!谢谢
有几个选项可以实现重试装饰器。重试装饰器查看方法中是否引发异常。以下示例使用指数退避重试。这将在每次重试之间等待 2^x * 1000 毫秒,最多 10 秒,然后是 10 秒,其中 x 是重试次数。
from retrying import retry
@retry(wait_exponential_multiplier=1000, wait_exponential_max=10000)
def extract_tweet(self):
consumer_key = 'XXX'
consumer_secret = 'XXX'
access_token = 'YYY'
access_token_secret = 'YYY'
try:
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
csvFile = open('HELLOTWITTER.csv', 'w', newline='', encoding='utf-8')
csvWriter = csv.writer(csvFile)
for tweet in tweepy.Cursor(api.search,q="#cybersecurity OR #InfoSec", since="2017-10-20",lang="en").items(10):
csvWriter.writerow([tweet.text, tweet.created_at])
csvFile.close()
except tweepy.error.TweepError:
raise