如何获得在另一台计算机上运行的作业的状态?

问题描述 投票:1回答:1

我有两台机器A和B,A可以如下向B发送宁静的请求:

curl -XPOST -H "Content-type: application/json" -d '{"data":"python /tmp/demo.py","action":"demo"}' 'http://192.168.95.8:51888/api/host'

我已经在B上部署了api服务,当收到此类请求时,B将执行python脚本/tmp/demo.py,执行过程可能持续0.5-3小时。

我的问题是:

1)如何在A上编写作业,以跟踪在B上运行的任务的状态,并在任务成功完成或失败时自行结束?

2)在跟踪作业中,如何添加一个在超过预设时间阈值后会自行杀死的模块?

python request remote-server job-scheduling
1个回答
0
投票

将作业作为HTTP资源处理。当您执行POST /api/host时,该请求将为该作业创建一个新ID并将其返回。为了更好地使用HTTP,响应中应包含一个Location标头,该标头包含可以检查作业状态的资源的URL,例如:]

POST /api/hosts
Content-type: application/json

{"data":"python /tmp/demo.py","action":"demo"}
HTTP/1.1 201 Created
Location: /api/host/jobs/c2de232b-f63e-4178-a053-d3f3459ab538

您现在可以随时GET /api/host/jobs/c2de232b-f63e-4178-a053-d3f3459ab538,查看作业的状态,例如:

{"status": "pending"}

您可以POST命令对该资源,例如取消它。

您的HTTP API如何获得该Python脚本的状态显然取决于您。也许它可以通过套接字与之通信,或者作业本身将定期将其状态写入某些数据库或文件。

© www.soinside.com 2019 - 2024. All rights reserved.