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

使用Tweepy开发Twitter点赞机器人遭遇429请求过多错误

Twitter机器人429限流问题的成因与修复

问题成因

  1. 限流配置错位:初始化tweepy.API时设置了wait_on_rate_limit=True,但实际执行点赞的是tweepy.Client实例,该实例未开启自动限流等待,遇到429错误会直接抛出,不会自动等待速率重置。
  2. 手动sleep无效:time.sleep(10)仅在单条推文处理后延迟,但Streaming是实时推送机制,当符合关键词的推文密集涌入时,手动sleep无法控制整体请求频率,依然会突破API速率限制。
  3. 流规则冗余:规则中存在多余的空值OR,可能导致无效匹配,增加不必要的请求量。

修复步骤

1. 给Client开启自动限流等待

修改tweepy.Client的初始化代码,添加wait_on_rate_limit=True参数,让Client自动处理429错误,在速率重置前自动等待:

client = tweepy.Client(
    BEARER_TOKEN, 
    TWITTER_API_KEY, 
    TWITTER_API_KEY_SECRET, 
    TWITTER_ACCESS_TOKEN, 
    TWITTER_ACCESS_TOKEN_S,
    wait_on_rate_limit=True
)

2. 移除无用的time.sleep(10)

Client的自动限流已经能处理速率问题,手动sleep不仅无效,还会增加处理延迟,直接删除该行代码。

3. 修正流规则的冗余项

删除规则中多余的空值OR,避免无效匹配:

rule = tweepy.StreamRule("(fumar OR fumando OR fumeque OR fumo) -is:retweet")

4. 清理冗余代码(可选)

初始化的tweepy.API实例未被使用,可直接删除相关代码减少冗余:

# 以下两行可删除
auth = tweepy.OAuth1UserHandler(TWITTER_API_KEY, TWITTER_API_KEY_SECRET, TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_S)
api = tweepy.API(auth, wait_on_rate_limit=True)

修复后完整代码

import time
import tweepy

TWITTER_API_KEY = "XXXX"
TWITTER_API_KEY_SECRET = "XXXX"
BEARER_TOKEN = "XXXX"
TWITTER_ACCESS_TOKEN = "XXXX"
TWITTER_ACCESS_TOKEN_S = "XXXX"

client = tweepy.Client(
    BEARER_TOKEN, 
    TWITTER_API_KEY, 
    TWITTER_API_KEY_SECRET, 
    TWITTER_ACCESS_TOKEN, 
    TWITTER_ACCESS_TOKEN_S,
    wait_on_rate_limit=True
)

alive()

class MyStream(tweepy.StreamingClient):
    def on_tweet(self, tweet):
        try:
            print(tweet.text)
            client.like(tweet.id)
        except Exception as error:
            print(error)

stream = MyStream(bearer_token=BEARER_TOKEN)

rule = tweepy.StreamRule("(fumar OR fumando OR fumeque OR fumo) -is:retweet")
stream.add_rules(rule)

stream.filter()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:30:59