在 Argo Workflows 中设置延迟后重试
Retrying after a settable delay in Argo Workflows
我们的一个 Argo 工作流程步骤可能会达到速率限制,我希望能够告诉 argo 在下一次重试之前应该等待多长时间。
有办法吗?
我在文档中看到了Retries,但它只讨论了重试计数和退避策略,而且看起来不能参数化。
据我所知,没有内置方法可以在下一次重试之前添加暂停。
但是,您可以使用 Argo 的 exit handler 功能构建您自己的。
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: exit-handler-with-pause-
spec:
arguments:
parameters
- name: pause-before-retry-seconds
value: "60"
entrypoint: intentional-fail
onExit: exit-handler
- name: intentional-fail
container:
image: alpine:latest
command: [sh, -c]
args: ["echo intentional failure; exit 1"]
- name: exit-handler
steps:
- - name: pause
template: pause
when: "{{workflow.status}} != Succeeded"
- name: pause
container:
image: alpine:latest
env:
- name: SECONDS
value: "{{workflow.parameters.pause-before-retry-seconds}}"
command: [sh, -c]
args:
- >-
echo "Pausing before retry..."
sleep "$SECONDS"
如果需要在工作流中计算重试暂停,请查看 exit handler with params 示例。
我们的一个 Argo 工作流程步骤可能会达到速率限制,我希望能够告诉 argo 在下一次重试之前应该等待多长时间。
有办法吗?
我在文档中看到了Retries,但它只讨论了重试计数和退避策略,而且看起来不能参数化。
据我所知,没有内置方法可以在下一次重试之前添加暂停。
但是,您可以使用 Argo 的 exit handler 功能构建您自己的。
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: exit-handler-with-pause-
spec:
arguments:
parameters
- name: pause-before-retry-seconds
value: "60"
entrypoint: intentional-fail
onExit: exit-handler
- name: intentional-fail
container:
image: alpine:latest
command: [sh, -c]
args: ["echo intentional failure; exit 1"]
- name: exit-handler
steps:
- - name: pause
template: pause
when: "{{workflow.status}} != Succeeded"
- name: pause
container:
image: alpine:latest
env:
- name: SECONDS
value: "{{workflow.parameters.pause-before-retry-seconds}}"
command: [sh, -c]
args:
- >-
echo "Pausing before retry..."
sleep "$SECONDS"
如果需要在工作流中计算重试暂停,请查看 exit handler with params 示例。