You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Tweepy(学术版API 2.0)获取推文回复时遭遇429请求过多错误

解决Tweepy调用Twitter API 2.0(学术访问)出现429错误的方案

先明确学术访问的速率限制

Twitter API 2.0学术访问下,search_recent_tweets的速率限制为每15分钟180次请求,单次请求最多返回100条结果。这个限额比普通访问高,但短时间内请求量超标仍会触发429错误,手动加time.sleep(1)通常无法精准匹配限额规则,所以没用。

最优解决方案:用Tweepy内置的速率限制处理

创建tweepy.Client时添加wait_on_rate_limit=True参数,Tweepy会自动检测速率限制,触发429时自动等待到限制重置后再继续请求,无需手动处理sleep。

基础修改后的代码

import tweepy

bearer_token = "your_bearer_token"
# 开启自动速率限制等待
twitter_client = tweepy.Client(bearer_token=bearer_token, wait_on_rate_limit=True)
tweet_id = "your_target_tweet_id"

def get_replies(tweet_ID):
    query = f"conversation_id:{tweet_ID} is:reply"
    # 设置max_results=100,减少请求次数
    replies = twitter_client.search_recent_tweets(query=query, max_results=100)
    return replies

get_replies(tweet_id)

获取全部回复(处理分页)

如果目标推文的回复超过100条,search_recent_tweets只会返回第一页结果,用Tweepy的Paginator结合自动速率限制处理,可获取所有回复:

import tweepy

bearer_token = "your_bearer_token"
twitter_client = tweepy.Client(bearer_token=bearer_token, wait_on_rate_limit=True)
tweet_id = "your_target_tweet_id"

def get_all_replies(tweet_ID):
    query = f"conversation_id:{tweet_ID} is:reply"
    all_replies = []
    # 遍历所有分页结果
    for page in tweepy.Paginator(twitter_client.search_recent_tweets, query=query, max_results=100):
        # 避免page.data为None时报错
        all_replies.extend(page.data or [])
    return all_replies

all_replies = get_all_replies(tweet_id)

额外注意事项

  • 若同时调用其他Twitter API端点,要注意这些请求会共享学术访问的总限额,避免跨端点请求量超标。
  • 不要循环高频调用get_replies函数,即使加手动sleep,也很难精准控制在15分钟180次的限额内,依赖Tweepy的自动处理更可靠。

内容的提问来源于stack exchange,提问作者Alexandros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 10:32:44