当前位置:首页 >  站长 >  编程技术 >  正文

Claude Code撞上限流就干等,跑通宵的任务第二天还挂着

 2026-10-17 16:06  来源: 互联网   我来投稿 撤稿纠错

  一键部署OpenClaw

定时任务这件事,失败不可怕,卡住才可怕。失败会在日志里留一行红字,第二天翻一眼就知道;卡住什么痕迹都不留,它只在进程列表里占一个位置,你以为它在干活,实际上它正原地等一个几小时后才会到来的重置时间。更麻烦的是它还占着锁、占着端口、占着那个工作目录,下一轮定时任务到点了起不来,于是一晚上什么都没发生,第二天看起来像“任务没跑”,其实是“跑了一个没跑完的”。这种故障最难查,因为它不留错误日志。你翻完所有日志都是干净的,只有进程列表里那个还不退出的进程能告诉你昨晚发生了什么。很多人查到这一步会以为是任务本身有问题,去改提示词、改脚本、改参数,其实什么都没坏,坏的是“等待没有上限”这条默认行为。

10月15日Claude Code发了v2.1.301,里面有条很小但很实用的改动,治的就是这个毛病。新增的环境变量叫CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS,用途一句话说完:给“等待额度重置”这件事设一个上限,超过就不再等,直接把请求结束掉。这条改动不长,但它改的是无人值守场景里最容易被忽略的一段逻辑。

先解释前面那个CLAUDE_CODE_RETRY_WATCHDOG。它是一个开关,打开之后请求遇到限流不会立刻失败,而是保持存活、按策略重试,适合跑在CI或者定时调度里的无人值守任务。这个设计的初衷很好:半夜撞上限流的概率不低,能自动等过去就等过去。问题出在“等”这个动作没有边界——以前不管你离重置还有三小时还是八小时,它就一直睡在那里等。这个设计的假设是“限流总会过去”,多数情况下这个假设成立。但额度重置可能留出好几个小时的窗口,凌晨跑的任务正好撞在窗口最靠前的位置,就变成了从两点等到八点。而这两点这一轮本该产出结果,八点这轮又该开始跑了,两头都空着。

卡住比失败贵在哪里

失败是有信号的。进程非零退出、日志里出现异常、监控告警响一声,这些都是你能接住的。卡住没有信号,它的外部表现是“还在运行”,所有基于进程状态的健康检查都会告诉你一切正常。你要等到第二天上午发现某个页面没更新、某个报表没生成,才会回头去查,中间已经浪费了一个完整的执行窗口。监控上有个词叫静默失败,说的就是这一类。它和宕机不一样:宕机你知道去修,静默失败你以为一切正常。所以对无人值守任务,光看“有没有退出”不够,还得再加一条“有没有按时产出”,后者才是真正能兜住的那道网。

对跑在服务器上的任务,这笔账还有第二层。夜里挂着一个不退出的进程,轻则占内存,重则占住文件锁和端口,导致第二天早上真正的业务进程起不来。有些站点就是这么莫名其妙地“早上打不开”的——不是服务器坏了,是昨晚一个等额度的进程还挂在那儿没走,新的没挤进来。

新变量的行为很简单:撞到429的时候看一眼响应里给的重置时间,如果这个时间点离现在超过了设定的毫秒数,请求就以api_request_usage_limit_wait_too_long这个错误结束,而不是睡到那一刻。也就是说,它把“无限等待”改成了“有预算的等待”,超预算就认输,让你下一轮重新来。

配多少合适,看你的调度间隔

这个值没有标准答案,取决于两件事:任务多久跑一次,以及你多着急要结果。如果是每小时跑一次的任务,把上限设成三十分钟左右比较合适——等不到就退出,下一个整点自然重来,损失不超过一小时。如果是每天凌晨跑一次的任务,可以放到两三个小时,给限流一点缓冲余地,但也别设成一整天,那等于没设。顺序上建议先设总额度那个,再设额度重置这个。前者管的是网络抖动这类临时故障,后者管的是配额见底,两种原因不同,混在一起设容易互相干扰。设完先跑一晚,看日志里有没有出现新的错误码,比坐在那里空想一个数值更有效。

官方给的最小示例是1800000毫秒,也就是三十分钟,配合CLAUDE_CODE_RETRY_WATCHDOG=1一起用。要注意它还有个兄弟变量CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS,管的是“总的重试等待时长”,两个是叠加关系而不是替代关系:一个管额度重置这一类,一个管所有重试的总体预算,两个都设上才算把口子扎住。

配完之后还要做一件事:在日志里搜一下api_request_usage_limit_wait_too_long这个串。它出现说明任务撞上限流被主动放弃了,这时候你要判断的是“额度真的不够”还是“任务本身太费”。如果一天出现好几次,说明该去调整任务粒度或者错峰调度,而不是继续调大这个上限——上限只是止损,不是解药。这两条改动放在一起还透出一个提示:无人值守模式下,最贵的不是模型调用本身,是“你以为它在跑”的那段时间。工具链现在开始往“尽早报错”的方向走,你这边也该跟着把“多久没产出就告警”配起来,两头对上才算闭环。

同一版里还有一条与之相关的改动值得一起看:切换到上下文窗口更小的模型时,现在会先用原来的模型把超长对话总结一遍再切,而且这个总结不会再不经询问就消耗额度。以前这一步可能悄悄花掉你的用量,现在至少会问一声。两件事放在一起看,方向是一致的——把无人值守时那些“你不知道它在花钱”的口子,一个个堵上。

所以要不要设这个上限,本质上是问你一个问题:你更怕任务没跑成,还是更怕任务看起来在跑其实没跑。前者你会在早上收到一封提醒,后者你要等到用户投诉才发现。做运维时间长了的人一般都会选前者,因为能被发现的失败,成本总是可控的。

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关标签
claude
code限流

相关文章

  • Claude Code改了钩子的失败策略,失效时不再放行

    你在服务器上跑智能体,多半给它配过钩子——命令执行之前先过一道自己写的脚本,危险动作一律拦下来。这道防线你写了,也测过,看着挺稳。可它一直有个不太起眼的毛病:钩子自己坏掉的时候,动作照样放行。脚本被删了、等超时了、或者中途崩了,拦截就这么悄悄消失,而且没有任何人被告知。平时看不出来,等到某天回头复盘

    标签:
    claude
    code
    ai智能
  • 智能体三周重构30万行C源码,把Code Health的分数从5.6拉到满分

    A5站长网10月14日消息,代码分析公司CodeScene发布了一份关于代码重构的案例研究:编码智能体在三周内重构了一个包含30万行C代码的代码库,花掉的token折算下来大约4000美元。整个过程覆盖726个文件、2903次提交,改动252055行代码,代码库的CodeHealth得分从5.6提到

  • 用Claude Code重写内核页缓存读取,小读吞吐提升三倍

    A5站长网10月13日消息,Linux内核的页缓存里有一处拖了两年多的老瓶颈,最近被林纳斯·托瓦兹自己动手改了一遍。罕见的不只是改动本身,还有他在补丁说明里留的那段署名:代码、测试程序、他对问题清单背后的评审,以及这封信的初稿,都是在他指导下由ClaudeCode完成的,性能数据跑在他自己的机器上。

    标签:
    linux内核
    claude
    code
  • Claude Code的自动模式,把关的其实是另一个模型

    你多半见过那种场面:让AI帮你跑一个要改二十几个文件的重构,它每改一个文件就停下来问你要不要继续。前两次你还认真看一眼,到第七次就变成机械地按回车。最有意思的是,按下一次回车的时候,你其实已经不太清楚自己在批准什么了。工具方显然也意识到这个矛盾,于是给了两条极端的路线,又补了一条中间的。一条是默认。

    标签:
    claude
    code
    AI编程
  • Anthropic发布Claude Haiku5.5,小模型这一档直接对上GPT-6 Luna的定价

    A5站长网10月8日消息,Anthropic发布ClaudeHaiku5.5,这是一个月内5.5家族的第三个成员,前面已经出了Opus5.5和Sonnet5.5。官方给它的定位是最快、最便宜、也最能干的小模型,瞄的是那些量大、对成本敏感、重复度高的活:文档摘要、信息抽取、数据库查询、分类。这类任务不

热门排行

信息推荐