通过 REST API 检测任务何时完成
Detecting when a task has finished through REST APIs
Sonatype 的 Nexus 存储库服务器提供了经典的 REST API。当通过 REST API 触发操作时,立即调用 returns,通过其状态代码指示操作是否已成功 启动 。我正在寻找一种方法来检测作业 是否以及何时成功完成 。
在我的具体案例中,我正在启动一个备份任务,以序列化格式将配置数据库写入磁盘:
curl -X POST "$mynexus/service/rest/v1/tasks/$task-id/run" -H "accept: application/json"
哪个 returns 204“任务立即 运行”。
然而,在那发生几分钟后,手动检查表明该任务创建的磁盘文件仍在增长。当然,我可以尝试观察 lsof
的输出,直到该任务似乎完成,但这非常不切实际,需要对服务器进行 root 访问并且还会破坏 REST 设计。
这里的一个自2016年以来一直没有得到答复,所以我会以更笼统的方式提问,希望答案更普遍适用:
当与 Sonatype Nexus 3.x 系列服务器通信时,REST 客户端如何检测到服务器端的操作已完全完成?
如果没有这样的方法,您会认为这是 Nexus 的问题还是建议创建自定义解决方法?
Nexus 3
有一个获取任务 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
}
Sonatype 的 Nexus 存储库服务器提供了经典的 REST API。当通过 REST API 触发操作时,立即调用 returns,通过其状态代码指示操作是否已成功 启动 。我正在寻找一种方法来检测作业 是否以及何时成功完成 。
在我的具体案例中,我正在启动一个备份任务,以序列化格式将配置数据库写入磁盘:
curl -X POST "$mynexus/service/rest/v1/tasks/$task-id/run" -H "accept: application/json"
哪个 returns 204“任务立即 运行”。
然而,在那发生几分钟后,手动检查表明该任务创建的磁盘文件仍在增长。当然,我可以尝试观察 lsof
的输出,直到该任务似乎完成,但这非常不切实际,需要对服务器进行 root 访问并且还会破坏 REST 设计。
这里的一个
当与 Sonatype Nexus 3.x 系列服务器通信时,REST 客户端如何检测到服务器端的操作已完全完成?
如果没有这样的方法,您会认为这是 Nexus 的问题还是建议创建自定义解决方法?
Nexus 3
有一个获取任务 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
}