Files
Arcrun/registry/examples/error-retry/workflow.yaml
T
2026-06-28 15:45:50 +08:00

44 lines
1.1 KiB
YAML

name: error_retry
description: try_catch + wait + retry 模式:外部 API 偶發掛掉時自動重試
flow:
- "input >> ON_SUCCESS >> try_call"
- "try_call >> ON_SUCCESS >> done"
- "try_call >> ON_FAIL >> wait_a_bit"
- "wait_a_bit >> ON_SUCCESS >> retry_call"
- "retry_call >> ON_SUCCESS >> done"
- "retry_call >> ON_FAIL >> final_fail_notify"
config:
try_call:
component: http_request
url: "{{input.target_url}}"
method: POST
body_json:
payload: "{{input.payload}}"
wait_a_bit:
component: wait
seconds: 5
# 第二次嘗試。生產環境通常 retry 2-3 次配指數 backoff
retry_call:
component: http_request
url: "{{input.target_url}}"
method: POST
body_json:
payload: "{{input.payload}}"
_retry: 1
done:
component: comp_passthrough
# 純記錄成功,下游若需要可繼續鏈
final_fail_notify:
component: telegram_send
chat_id: "{{secret.LEO_TELEGRAM_CHAT_ID}}"
text: |
⚠️ workflow {{input.workflow_name}} 兩次重試都失敗
target: {{input.target_url}}
last error: {{retry_call.error}}