Waitfor

描述

阻止执行,直到一组指定的条件变为真。这旨在与 并行 任务一起使用,以同步一组进程。

要等待的条件在 嵌套元素 中定义,如果指定了多个条件,则任务将等待直到所有条件都为真。

如果 maxwaitmaxwaitunit 都未指定,则默认 maxwait 为 3 分钟(180000 毫秒)。

如果设置了 timeoutproperty 属性,则如果条件在指定时间内未变为真,则将创建具有该名称的属性。

参数

属性 描述 必需
maxwait 在任务失败之前,等待所有必需条件变为真的最大时间。 否;默认为 180000 maxwaitunits
maxwaitunit 必须用于解释 maxwait 属性值的单位时间。有效值为
  • 毫秒
  • 分钟
  • 小时
否;默认为 毫秒
checkevery 每次测试条件之间等待的时间。 否;默认为 500 checkeveryunits
checkeveryunit 必须用于解释 checkevery 属性值的单位时间。有效值为
  • 毫秒
  • 分钟
  • 小时
否;默认为 毫秒
timeoutproperty 如果 maxwait 已超过,则要设置的属性的名称。

作为嵌套元素指定的参数

满足 <waitfor> 任务的可用条件与 <condition> 任务的条件相同。有关完整列表,请参见 此处

示例

等待最多 30 秒,直到出现名为 errors.log 的文件。

<waitfor maxwait="30" maxwaitunit="second">
    <available file="errors.log"/>
</waitfor>

等待最多 3 分钟(并每 500 毫秒检查一次),直到 localhost 上的 Web 服务器提供指定的 URL。

<waitfor maxwait="3" maxwaitunit="minute" checkevery="500">
    <http url="https://localhost/myapp/index.html"/>
</waitfor>

等待最多 10 秒,直到 dbserver 机器上的服务器开始监听端口 1521,并且 https://webserver/mypage.html 网页可用。

<waitfor maxwait="10" maxwaitunit="second">
    <and>
        <socket server="dbserver" port="1521"/>
        <http url="https://webserver/mypage.html"/>
    </and>
</waitfor>