微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决通过 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 设计。

此处的similar question 自 2016 年以来未收到任何答复,因此我会以更笼统的方式提问,希望答案更适用:

REST 客户端如何在与 Sonatype Nexus 3.x 系列服务器通信时检测到服务器端的操作已完全完成?

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

解决方法

Nexus 3 有一个 get task 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 task API endpoint documentation

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。