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

使用Tweepy调用create_tweet遇API限流,无法获取响应头问题求助

解决Tweepy调用Twitter API限流时无法获取响应头的问题

当Tweepy触发限流报错时,你可以通过捕获对应的异常来获取响应头信息——因为Tweepy的限流异常本身就携带了完整的响应对象。

核心解决方法:捕获限流异常提取响应头

Tweepy在遇到限流时会抛出Tweepy.errors.TooManyRequests异常,你可以在try-except块中捕获这个异常,并从异常实例的response属性中拿到响应头。示例代码如下:

import tweepy
import time
import requests

# 初始化客户端
client = tweepy.Client(
    bearer_token=bearer_token,
    access_token=token,
    access_token_secret=token_secret,
    consumer_key=consumer_key,
    consumer_secret=consumer_secret,
    return_type=requests.Response
)

try:
    response = client.create_tweet(text=message)
    # 正常请求时也可提前获取限流监控信息
    remaining = response.headers.get('x-rate-limit-remaining')
    reset_time = int(response.headers.get('x-rate-limit-reset', 0))
    print(f"剩余请求次数: {remaining}, 限流重置时间: {time.ctime(reset_time)}")
except tweepy.errors.TooManyRequests as e:
    # 从异常中提取响应对象
    error_response = e.response
    # 获取限流重置时间(Unix时间戳)
    reset_timestamp = int(error_response.headers.get('x-rate-limit-reset', 0))
    # 计算限流剩余等待时长
    remaining_seconds = reset_timestamp - int(time.time())
    print(f"已触发限流,还需等待 {remaining_seconds // 60} 分钟 {remaining_seconds % 60} 秒恢复")
    # 获取当前剩余请求次数(触发限流时通常为0)
    remaining = error_response.headers.get('x-rate-limit-remaining')
    print(f"剩余请求次数: {remaining}")

关键说明

  • 限流持续时长需要通过x-rate-limit-reset头计算:这个值是Unix时间戳,表示限流将在该时间点重置,用它减去当前时间戳就能得到还需等待的秒数。
  • x-rate-limit-remaining表示剩余可用请求次数,触发限流时该值通常为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 05:36:05