Ant waitfor等待的时间超过了所需的时间

时间:2013-07-26 10:51:32

标签: ant

我在运行exec任务之前使用Ant等待URL可访问,但它等待的时间比我想要的要长得多。

我的waitfor -

<waitfor maxwait="3" maxwaitunit="minute" checkevery="500">
    <http url="http://127.0.0.1:${product.listenport}/start/"/>
</waitfor>

几乎只要我在终端上看到这个输出,我就会在浏览器中加载URL并按预期获取页面,但Ant仍在等待(甚至可能长于maxwait值。)

这个实现有问题吗?

3 个答案:

答案 0 :(得分:0)

在第一次检查之前,您可能需要插入一个短暂的延迟(只需几秒钟就可以发出声音)。我怀疑Ant是第一次尝试过早地获取URL并因某种原因挂起 期间首次获取(在waitfor有机会等待半秒之后再次尝试)。

<sleep seconds="5" />
<waitfor maxwait="3" maxwaitunit="minute" checkevery="500">
    <http url="http://127.0.0.1:${product.listenport}/start/"/>
</waitfor>

答案 1 :(得分:0)

我现在也遇到了这个问题。我试图使用waitfor作为一种ping

我们的一些单元测试需要数据库连接才能正确执行它们,并且我们在公司服务器上拥有该数据库。如果我没有连接到该服务器,我不希望测试尝试运行,因为这些任务只是等待服务器,我无法判断它是在运行测试还是只是等待用于连接。当我意识到后者时,相当多的浪费时间已经过去了。我必须连接到服务器,然后重新运行测试。所以我一直在寻找一种快速的Ping任务,如果没有连接到服务器就会失败。这是我的解决方案。

<limit maxwait="10" maxwaitunit="second" failonerror="true">
   <waitfor maxwait="20" maxwaitunit="second">
      <socket server="myserver" port="5432"/>
    </waitfor>
</limit>

端口5432用于postgresql,但您可以检查适合您任务的端口。

答案 2 :(得分:0)

尝试将checkeveryunit添加到您的块中,它应该可以解决这个问题:

<waitfor maxwait="3" maxwaitunit="minute" checkevery="5" checkeveryunit="second">
   <http url="http://127.0.0.1:${product.listenport}/start/"/>
</waitfor>

这样您就不会等待500秒并传递maxwait