等待几分钟,检查 URL 是否有响应
Wait for a couple of minutes to check if an URL is responding
我 运行 使用 Ansible 的启动脚本如下:
- name: Start service
raw: "source ~/.profile; ~/start.sh"
现在,我想继续检查上面启动的服务的 HTTP 状态,直到成功 — 200
。
下面是我如何检查 HTTP 状态 200
,但是,我不知道如何继续检查 2 分钟并报告 URL 仍然没有 return 200
.
- name: Detect if HTTp response is '200'
uri:
url: 'http://myhost/iportal/'
return_content: yes
validate_certs: no
status_code:
- 200
register: uri_output
使用 until
循环:
- name: Wait until HTTP status is 200
uri:
url: 'http://myhost/iportal/'
return_content: yes
validate_certs: no
status_code:
- 200
until: uri_output.status == 200
retries: 24 # Retries for 24 * 5 seconds = 120 seconds = 2 minutes
delay: 5 # Every 5 seconds
register: uri_output
请注意:在这种情况下,如果您的请求最终超时,您可能会看到不同的时间。 uri
模块的默认timeout
是30秒。
在这种情况下,您将有 24 次重试 * 5 秒延迟 + 24 次重试 * 30 秒直到超时,因此,大约需要 14 分钟。
从那时起,要么调整超时或重试次数,要么两者兼而有之。
我 运行 使用 Ansible 的启动脚本如下:
- name: Start service
raw: "source ~/.profile; ~/start.sh"
现在,我想继续检查上面启动的服务的 HTTP 状态,直到成功 — 200
。
下面是我如何检查 HTTP 状态 200
,但是,我不知道如何继续检查 2 分钟并报告 URL 仍然没有 return 200
.
- name: Detect if HTTp response is '200'
uri:
url: 'http://myhost/iportal/'
return_content: yes
validate_certs: no
status_code:
- 200
register: uri_output
使用 until
循环:
- name: Wait until HTTP status is 200
uri:
url: 'http://myhost/iportal/'
return_content: yes
validate_certs: no
status_code:
- 200
until: uri_output.status == 200
retries: 24 # Retries for 24 * 5 seconds = 120 seconds = 2 minutes
delay: 5 # Every 5 seconds
register: uri_output
请注意:在这种情况下,如果您的请求最终超时,您可能会看到不同的时间。 uri
模块的默认timeout
是30秒。
在这种情况下,您将有 24 次重试 * 5 秒延迟 + 24 次重试 * 30 秒直到超时,因此,大约需要 14 分钟。
从那时起,要么调整超时或重试次数,要么两者兼而有之。