惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
D
Docker
IT之家
IT之家
博客园_首页
罗磊的独立博客
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
美团技术团队
Y
Y Combinator Blog
博客园 - 聂微东
量子位
阮一峰的网络日志
阮一峰的网络日志
GbyAI
GbyAI
Microsoft Security Blog
Microsoft Security Blog
博客园 - Franky
Martin Fowler
Martin Fowler
Jina AI
Jina AI
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
月光博客
月光博客
G
Google Developers Blog
B
Blog
T
The Blog of Author Tim Ferriss
爱范儿
爱范儿

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派
2026-04-30 · via 少数派

今天早上九点,打开终端准备继续跑昨晚留下的脚本,Claude API 直接返回了 503。重启了两遍网络,还是不行。去 status.anthropic.com 一看——大规模宕机,所有人都挂了。

Claude.ai 和 Claude API 目前(2026年4月30日)正在经历大规模宕机,Anthropic 官方已在 status.anthropic.com 确认,影响范围覆盖 claude.ai 网页端、API 调用以及 Claude Code 工具。宕机持续了数小时,目前尚未完全恢复。

如果你的应用或工作流依赖 Claude API,这篇文章整理了我今天用到的几个应急方案,以及从长远角度如何避免再次被单点故障坑到。


受影响范围

  • claude.ai 网页对话全线无法使用
  • API 调用返回 503/529 错误
  • Claude Code 工具无响应
  • 依赖 Claude API 的第三方应用同步受影响

503 是标准的服务不可用,529 是 Anthropic 特有的过载错误码,见到这两个基本就是供应商出问题了,不是你代码的锅。


应急方案:临时切换备用模型

方案一:改 model 切到 GPT-4o

如果你用的是 OpenAI SDK 风格的接口,切换成本其实很低,改 model 参数就行:

import openai

client = openai.OpenAI(
    base_url="https://api.ofox.ai/v1",  # 低延迟直连,支持多模型
    api_key="sk-xxx"
)

response = client.chat.completions.create(
    model="gpt-4o",  # 直接切到 GPT-4o
    messages=[{"role": "user", "content": "你原来的 prompt"}]
)

踩坑记录:如果你的 prompt 里用了 Claude 特有的 XML tag 格式(<context><instructions>),GPT-4o 也能识别,但效果可能会打折扣。如果有 thinking 参数,切换时记得去掉,GPT 不支持这个。

方案二:降级到 Claude Haiku 试试运气

有时候不是全线挂,而是某个模型超载。可以试着把模型从 Opus 降到 Haiku:

import anthropic

client = anthropic.Anthropic()

def call_with_fallback(prompt: str) -> str:
    models = ["claude-opus-4-7", "claude-haiku-4-5-20251001"]

    for model in models:
        try:
            response = client.messages.create(
                model=model,
                max_tokens=4096,
                messages=[{"role": "user", "content": prompt}]
            )
            return response.content[0].text
        except anthropic.APIStatusError as e:
            if e.status_code in [503, 529]:
                print(f"{model} 不可用,尝试下一个...")
                continue
            raise

    raise RuntimeError("所有模型均不可用")

不过今天这次是整条链路挂了,Haiku 也没幸免,这个方案失效了。

方案三:加指数退避重试

对于短暂的抖动(不是持续宕机),加重试逻辑往往够用:

import time
import openai

def call_with_retry(client, model: str, messages: list, max_retries: int = 3):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(
                model=model,
                messages=messages
            )
        except openai.APIStatusError as e:
            if e.status_code in [429, 503, 529] and attempt < max_retries - 1:
                wait = 2 ** attempt  # 1s → 2s → 4s
                print(f"API error {e.status_code},{wait}s 后重试...")
                time.sleep(wait)
            else:
                raise

429 是限流,503/529 是服务不可用,都值得重试。别用固定间隔,指数退避能减少对服务端的压力。


从根上解决:多供应商冗余

今天这次宕机让我意识到,靠代码层的重试是治标不治本的——供应商整体挂掉,重试多少次都没用。

真正的解法是不要单点依赖一家供应商,让路由层自动切换。

ofox.ai 多供应商冗余平台

说实话,我以前对聚合平台有偏见,觉得中间多一层一定会慢。但这次宕机让我重新评估了一下。

ofox.ai 是一个 AI 模型聚合平台,背后同时接了 Azure/AWS Bedrock/VertexAI/阿里云/火山引擎等多个供应商,某一路挂了自动切换,对你的代码完全透明,成功率 99.2%。实测延迟在 310ms 左右,比我预期好很多。

client = openai.OpenAI(
    base_url="https://api.ofox.ai/v1",  # 低延迟直连,多路冗余备份
    api_key="sk-xxx"
)

支持 GPT-5.4、Claude Opus 4.6、Gemini 3、DeepSeek V3 等 50+ 模型,兼容 OpenAI SDK 协议,支持支付宝按量计费。今天 Claude 挂掉的这几个小时,走这个路由的请求全部无缝切到了 GPT-4o,业务没有中断。


监控建议:别靠 status 页

status.anthropic.com 这次更新比实际宕机晚了将近 20 分钟——靠官方 status 页做监控太被动了。

更好的做法是自己跑一个轻量健康检查:

import httpx
import time

def check_api_health(base_url: str, api_key: str, model: str = "claude-haiku-4-5-20251001") -> bool:
    try:
        response = httpx.post(
            f"{base_url}/chat/completions",
            headers={"Authorization": f"Bearer {api_key}"},
            json={
                "model": model,
                "messages": [{"role": "user", "content": "ping"}],
                "max_tokens": 5
            },
            timeout=10.0
        )
        return response.status_code == 200
    except Exception:
        return False

# 每分钟检查一次
api_key = "your-api-key"
while True:
    if not check_api_health("https://api.anthropic.com", api_key):
        print("⚠️ Anthropic API 异常")
        # 这里接你自己的告警渠道(钉钉/Slack/邮件)
    time.sleep(60)

用 systemd 或 launchd 跑后台,挂掉第一时间知道,不用等到用户反馈才发现。


这次宕机的几点观察

1. Claude Code 受影响最大

Claude Code 直接依赖 API,宕机期间几乎完全不能用。如果你的开发流依赖 Claude Code,建议在 VS Code 里同时装一个 Cursor,作为临时备用。

2. XML tag prompt 耦合是迁移成本

Claude 特有的 <context><instructions><output_format> 风格 prompt,切到 GPT 时效果会有损耗。如果你的应用对模型有强依赖,迁移成本会比想象中高。

3. Extended Thinking 无法直接迁移

Claude 的 thinking 参数在其他模型上没有直接替代品,依赖这个特性的场景临时切换会比较难受。


小结

这次宕机给我的最大教训:

  • 单点依赖任何一家供应商都是风险,哪怕是最稳的那家
  • 代码要做好模型切换的抽象,base_url + model 参数化,一行切换
  • 供应商层面的冗余比代码层的重试更根本
  • 自己做 API 健康监控,不要依赖官方 status 页

Claude 好用,但不能成为唯一选项。