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

如何仅在超时场景下重试HTTP请求并流转至流程错误处理器?

仅针对超时错误重试HTTP请求的正确实现方案

核心思路

不要在until-successful内部用try+on-error continue吞掉非超时错误,而是仅捕获超时错误触发重试,其他所有错误直接向上抛出,交给流程级的错误处理器处理。

具体实现步骤

  1. 配置until-successful内部的HTTP请求错误处理
    给HTTP请求添加错误处理器,只对超时错误做传播(触发until-successful重试),其他错误直接抛出到流程层面:

    <until-successful maxRetries="3" secondsBetweenRetries="2" doc:name="Retry On Timeout">
        <http:request method="GET" url="#[vars.targetApiUrl]" doc:name="HTTP Request">
            <http:error-handler>
                <!-- 超时错误传播,触发until-successful重试 -->
                <on-error-propagate type="HTTP:TIMEOUT" doc:name="Propagate Timeout">
                </on-error-propagate>
                <!-- 其他所有错误直接抛出,交给流程级handler处理 -->
                <on-error-propagate type="ANY" doc:name="Propagate Non-Timeout Errors">
                </on-error-propagate>
            </http:error-handler>
        </http:request>
    </until-successful>
    
  2. 流程级错误处理器配置
    在流程根节点配置对应的错误处理器,接收并处理非超时的HTTP错误:

    <flow name="mainBusinessFlow">
        <error-handler>
            <!-- 处理500内部服务器错误 -->
            <on-error-continue type="HTTP:INTERNALSERVERERROR" doc:name="Handle 500 Error">
                <logger level="ERROR" message="捕获到500错误:#[error.description]" />
                <!-- 这里添加你的错误处理逻辑,比如返回特定响应、记录告警等 -->
            </on-error-continue>
            <!-- 可根据需求添加其他HTTP错误类型的处理 -->
            <on-error-continue type="HTTP:BADREQUEST" doc:name="Handle 400 Error">
                <logger level="ERROR" message="捕获到400错误:#[error.description]" />
            </on-error-continue>
        </error-handler>
        
        <!-- 流程其他逻辑 -->
        <until-successful ...>
            <!-- 上述HTTP请求配置 -->
        </until-successful>
    </flow>
    

原方案问题分析

你之前用try嵌套on-error continue处理非超时错误,相当于在until-successful内部就把错误吞掉了,没有向上传播给流程级的错误处理器,自然无法触发流程层面的错误处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:46:08