通过REST api检测任务何时完成



Sonatype的Nexus存储库服务器提供了一个经典的REST API。当通过REST API触发操作时,调用立即返回,并通过其状态码指示操作是否已成功启动。我正在寻找一种方法来检测工作是否以及何时成功完成

在我的具体情况中,我启动了一个备份任务,该任务以序列化格式将配置数据库写入磁盘:

curl -X POST "$mynexus/service/rest/v1/tasks/$task-id/run" -H "accept: application/json"

返回204 "任务已运行"立即.

然而,几分钟后,手动检查表明该任务创建的磁盘上文件仍在增长。当然,我可以尝试观察lsof的输出,直到该任务似乎完成,但这将是非常不切实际的,需要root访问服务器,也破坏REST设计。

这里有一个类似的问题自2016年以来一直没有得到答案,所以我将以更一般的方式提问,希望答案能更普遍地适用:

当与Sonatype Nexus 3通信时,REST客户端如何检测服务器端操作已完全完成?X系列服务器?

如果没有这样的方法,你会认为这是Nexus的问题,还是你会建议创建一个自定义的解决方案?

Nexus 3有一个get任务API端点,它将为您提供有关特定任务的不同信息,包括其currentState

GET /service/v1/tasks/{id}

取自以下链接文档的示例API响应:

{
"id" : "0261aed9-9f29-447b-8794-f21693b1f9ac",
"name" : "Hello World",
"type" : "script",
"message" : null,
"currentState" : "WAITING",
"lastRunResult" : null,
"nextRun" : null,
"lastRun" : null
}

参考:Nexus get任务API端点文档

最新更新