Google Workflow自定义重试谓词实现内容校验重试运行报错咨询
问题根因
- Google Workflows 自定义重试谓词子工作流的入参由系统固定传入,不支持自定义参数列表,系统默认会传入三个参数:
error(try块中抛出的错误内容)、http_response(HTTP调用响应对象)、retry_count(当前已重试次数),你定义的params: [dayName]和系统传入的参数不匹配,直接触发运行时错误。 - 重试逻辑写反:谓词返回
True时才会触发重试,返回False时会终止重试流程直接抛出错误。 - 重试等待配置不符合需求:当前配置初始延迟为2秒,和你需要的10秒重试间隔不符。
修复后代码
main: steps: - first_step: try: steps: - getCurrentDay: call: http.get args: url: https://us-central1-workflowsample.cloudfunctions.net/datetime result: currentDateTime - setFromCallResult: assign: - dayName: ${currentDateTime.body.dayOfTheWeek} - whatIsToday: call: sys.log args: data: ${dayName + " is actually a day"} severity: "INFO" - callRetry: switch: - condition: ${dayName == "Thursday"} raise: ${dayName} retry: predicate: ${my_own_predicate} max_retries: 5 backoff: initial_delay: 10 max_delay: 10 multiplier: 1 - last_step: return: "OK" my_own_predicate: params: [error] steps: - checkRetryCond: switch: - condition: ${error == "Thursday"} return: True - otherwise: return: False
关键改动说明
- 把
my_own_predicate的入参修改为系统传入的error参数,直接接收你抛出的日期字符串 - 调整判断逻辑:当抛出的错误为
Thursday时返回True,触发重试 - 修改退避配置,初始延迟和最大延迟都设为10,乘子为1,保证每次重试间隔固定为10秒
内容的提问来源于stack exchange,提问作者bobby.dreamer
相关产品推荐
相关产品推荐

