在运行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
值还要长)。
这个实现有问题吗?
在第一次检查之前,您可能需要插入一个短延迟(根据声音,几秒钟就足够了)。我怀疑Ant第一次尝试获取URL的时间太快,并且在第一次获取期间(在waitfor
有机会等待半秒钟并重试之前)由于某种原因挂起了。
<sleep seconds="5" />
<waitfor maxwait="3" maxwaitunit="minute" checkevery="500">
<http url="http://127.0.0.1:${product.listenport}/start/"/>
</waitfor>
我刚才也遇到了这个问题。我试着用等待作为一种ping
我们的一些单元测试需要数据库连接才能正确执行,我们在公司服务器上有这个数据库。如果我没有连接到该服务器,我不希望测试尝试和运行,因为这些任务只是挂起等待服务器,我无法判断它是在运行测试还是只是在等待连接。当我意识到后者的时候,已经浪费了相当多的时间。我必须连接到服务器,然后重新运行测试。所以我在寻找一种快速的Ping任务,如果没有连接到服务器,它就会失败。这是我的解决方案。
<limit maxwait="10" maxwaitunit="second" failonerror="true">
<waitfor maxwait="20" maxwaitunit="second">
<socket server="myserver" port="5432"/>
</waitfor>
</limit>
端口5432用于postgresql,但您可以检查适合您任务的端口。
尝试将checkeveryunit
添加到您的块中,它应该可以做到这一点:
<waitfor maxwait="3" maxwaitunit="minute" checkevery="5" checkeveryunit="second">
<http url="http://127.0.0.1:${product.listenport}/start/"/>
</waitfor>
这样,您就不会等待500秒并通过maxwait