0

在运行 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值还要长)。

这个实现有问题吗?

4

3 回答 3

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>
于 2013-07-26T11:23:35.460 回答
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,但您可以检查适合您任务的端口。

于 2014-05-29T19:32:44.750 回答
0

尝试添加checkeveryunit到您的块中,它应该可以解决问题,如下所示:

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

这样您就不会等待 500 秒并通过maxwait

于 2018-01-25T13:41:41.910 回答