【问题标题】:Wait for a couple of minutes to check if an URL is responding等待几分钟以检查 URL 是否响应
【发布时间】:2022-06-30 03:43:19
【问题描述】:

我使用 Ansible 运行如下启动脚本:

- name: Start service
  raw: "source ~/.profile; ~/start.sh"

现在,我想继续检查我在上面启动的服务的 HTTP 状态,直到它成功 — 200

以下是我如何检查 HTTP 状态 200,但是,我不知道如何继续检查 2 分钟并报告 URL 是否仍然没有返回 200

- name: Detect if HTTp response is '200'
  uri:
    url: 'http://example.org/iportal/'
    return_content: yes
    validate_certs: no
    status_code:
      - 200
  register: uri_output

【问题讨论】:

    标签: url ansible wait http-response-codes until-loop


    【解决方案1】:

    使用until 循环:

    - name: Wait until HTTP status is 200
      uri:
        url: 'http://example.org/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 分钟。
    从那里开始,调整超时或重试次数,或两者兼而有之。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-12
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 2010-11-16
      相关资源
      最近更新 更多