使用Tweepy StreamingClient调用add_rules遇Error 429连接超限求助
解决Tweepy调用.add_rules()时出现Error 429(连接数超限)问题
错误原因分析
Error 429提示“This stream is currently at the maximum allowed connection limit.”,核心原因是你的Twitter开发者账号对应的流式API连接数已达上限——免费版API通常只允许1个活跃的流式连接,若之前的连接未正确关闭(比如脚本意外崩溃、进程残留),就会占用连接名额,导致新请求被拒绝。
解决方案
- 关闭残留的活跃连接:检查本地是否有其他使用同一Bearer Token的Python进程在运行流式任务,用任务管理器/终端杀掉这些进程;如果是服务器上运行,用
ps aux | grep python找到进程并终止。 - 确保连接正确关闭:修改代码,添加异常处理和连接关闭逻辑,避免意外中断时连接残留:
import signal import sys client = tweepy.StreamingClient(bearer_token=TWITTER_BEARER_TOKEN) def handle_exit(signal_num, frame): print("Closing stream connection...") client.disconnect() sys.exit(0) # 注册信号处理,捕获终止信号 signal.signal(signal.SIGINT, handle_exit) signal.signal(signal.SIGTERM, handle_exit) # 修正StreamRule的语法错误(多余的右括号) try: client.add_rules(tweepy.StreamRule("(from:kingerman88 OR from:KingerTester) -is:reply")) print("Bot Online!") client.filter(expansions=['author_id', 'in_reply_to_user_id'], user_fields=["id", "name", "username"]) except Exception as e: print(f"Error: {e}") client.disconnect() - 等待连接释放:如果是之前的连接意外中断,Twitter的服务器可能需要几分钟时间释放连接名额,等待10-15分钟后再重新运行脚本。
- 检查API权限限制:登录Twitter开发者平台,查看你的项目的流式API配额,确认是否超出了并发连接数限制(免费版默认1个)。
额外注意事项
你的代码中StreamRule存在语法错误——末尾多了一个右括号,修正后能避免不必要的请求异常,虽然这不是429错误的直接原因,但建议优先修正。
内容的提问来源于stack exchange,提问作者kingerman88
相关产品推荐
相关产品推荐

