2

我正在尝试为自己编写一个与 Hudson 构建服务器集成的小工具。我目前遇到的障碍是性能。我想做一个简单的事情,比如列出所有工作和最后一次成功构建的时间。hudson API 提供了这些信息,但我要么必须查询所有内容,depth=2要么单独查询每个作业(目前有 150 个)。即使采用exclude任何一种方法都需要半分钟以上。这对于应该是活泼的 UI 来说是不可接受的。我需要这个时间低于 1 秒,最好低于 0.5 秒。

我提出的当前解决方案是在客户端进行大量缓存。构建数据不会改变,这让事情变得容易多了。但它仍然有很多编码。

是否有另一种方法可以快速获取此信息?也许有一个插件可以缓存所有数据并提高 API 速度?请注意,该工具通常无法访问 HUDSON_HOME。

4

1 回答 1

3

使用tree查询参数比查询 at 快得多depth=2。根据 Hudson 内置 API 文档(请参阅控制在http://hudson/api/下获取的数据量),tree它比排除更有效,因为服务器不会生成然后丢弃数据。

我认为以下 URL 将适用于您问题中的查询:

http://hudson/api/xml?tree=jobs[name,lastSuccessfulBuild[number,url,timestamp]]

在我的系统上有 40 个工作:

$ time curl "http://hudson/api/xml?tree=jobs\[name,lastSuccessfulBuild\[number,url,timestamp\]\]"

<hudson><job><name>Example Windows build</name>
   <lastSuccessfulBuild><number>7</number>
   <timestamp>1264806194000</timestamp>
...lots of unformatted XML...

real    0m0.166s
user    0m0.062s
sys     0m0.093s
于 2011-01-19T18:18:31.007 回答