2013-07-26 26 views
0

我使用Ant等到URL是运行一个可执行程序任务之前访问,但较长等待远比我想它。蚂蚁WAITFOR等待时间比它需要

waitfor -

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

几乎只要我看到终端上这个输出,我加载网址在浏览器获取页面预期,并且仍然蚂蚁等待(可能长于maxwait价值甚至)。

这个实现有问题吗?

回答

0

在第一次检查之前,您可能需要插入一个短暂的延迟(只需几秒钟就可以听到它的声音)。我怀疑蚂蚁正在它的第一次尝试太快获取URL,并在挂出于某种原因首先取(waitfor都有机会等到半秒,然后重试前)。

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

这似乎是合乎逻辑的,但不幸的是,等待并没有帮助。 waitfor只是保持超时。我已经添加了timeoutproperty并验证了会发生什么。我目前的解决方案是尽量减少maxwait,因为到目前为止,服务器是可用的。 –

0

我刚才也有这个问题。我试图用WAITFOR作为一种平

我们的一些单元测试需要一个数据库连接到正确履行他们与我们有一个公司服务器上的数据库。我不想测试尝试和运行,如果我没有连接到服务器,因为这些任务只是挂在等待服务器,如果它运行测试或只是等待一个方面,我不能告诉。当我意识到后者时,相当多的浪费时间已经过去了。我必须连接到服务器,然后重新运行测试。所以我一直在寻找一种快速的Ping任务,如果没有连接到服务器就会失败。这是我的解决方案。

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

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

0

尝试添加checkeveryunit到您的块,它应该做的伎俩,这样的事情:

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

这样你不会等待500秒,并通过maxwait