内部的依赖关系可以设计为一个任务保存一个rely number,然后完成一个任务去把所有依赖它的任务的rely number减一,遇到零则该任务进入队列,重复直至所有任务完成。
Authorization
加密的时候加密内容为: <uri>\n<body>
// 上传任务
//一次执行的结果在一台机器,如果要在另外一台机器执行要怎么破?
//1、设计成runner的master,slave模式,master保存所有资源,slave依赖master执行(从master复制资源,再同步到master),当一个任务串开始执行时,
//第一个执行者就成为master
//2、有一台总的调度机器,runner执行完毕后,向master发通知,说我这里有什么资源,然后之后的runner如果需要以前的计算结果,就通过master去查询并且拿到
//感觉第二种好一点
//第二种应该是会好一点
REQ:
POST /put
Content-Type: application/json
Authorization: <xxx>
{
"items": [{
"runner": "who",
"args": [...],
"input": [{"url": "xxx", "saveas": "xxx"}, ...], #获取的资源可以用saveas保存,可以作为给args中的参数,用户自定义
"output": [], # 这次计算中需要保存或者要留给下次计算用的结果
"rely": [2, 3, 6, ...],
"id": 0,
"allow_fail": false,
}, ...],
"results": ["file1", "file2"], # 最终结果
"callback": "callback_url"
}
RESP:
HTTP/1.1 200 OK
Content-Type: application/json
{"run_id": xxx}
// 查询任务进度
REQ:
GET /query/<run_id>
RESP:
HTTP/1.1 200 OK
Content-Type: application/json
{
...
}
// 上传runner
POST /upload/<user>/<runner_name>
Authorization: <xxx>
<...>
RESP:
HTTP/1.1 200 OK