这玩意有点像我之前写过的 MapReduce,也是单 master 负责调度,多 worker 负责执行 task。并且一个 worker 只允许执行一个任务,但执行完任务后可以重新申请 task。
Artur 就是负责之前 perceval
任务的调度,分为 arthurd
和 arthurw
。 arthurd
也就是服务端,负责 assign task。而 arturw
负责申请 task 然后执行。
# 配置文件
Arturd
:
[arthur] | |
archive_path=/tmp/.arthur/archive | |
debug=True | |
log_path=/tmp/logs/arthurd | |
no_archive=True | |
sync_mode=True | |
[connection] | |
host=127.0.0.1 | |
port=8080 | |
[elasticsearch] | |
es_index=http://localhost:9200/items | |
[redis] | |
database=redis://localhost/8 |
可以指定 port,用于提供服务。
Arturw
:
arthurw -d redis://localhost/8
直接给 redis 数据库地址。
# 添加 task
$ cat tasks.json
{
"tasks": [
{
"task_id": "arthur.git",
"backend": "git",
"backend_args": {
"gitpath": "/tmp/git/arthur.git/",
"uri": "https://github.com/chaoss/grimoirelab-kingarthur.git",
"from_date": "2015-03-01"
},
"category": "commit",
"scheduler": {
"delay": 10
}
},
{
"task_id": "bugzilla_mozilla",
"backend": "bugzillarest",
"backend_args": {
"url": "https://bugzilla.mozilla.org/",
"from_date": "2016-09-19"
},
"category": "bug",
"archive": {
"fetch_from_archive": true,
"archived_after": "2018-02-26 09:00"
},
"scheduler": {
"delay": 60,
"max_retries": 5
}
}
]
}
然后发送:
curl -H "Content-Type: application/json" --data @tasks.json http://127.0.0.1:8080/add
可以这很 restful。
# 后续
本来想自己运行一下的,但是呃呃我的 redis 镜像一直拉不下来,就懒得弄了。