这玩意有点像我之前写过的 MapReduce,也是单 master 负责调度,多 worker 负责执行 task。并且一个 worker 只允许执行一个任务,但执行完任务后可以重新申请 task。

Artur 就是负责之前 perceval 任务的调度,分为 arthurdarthurwarthurd 也就是服务端,负责 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 镜像一直拉不下来,就懒得弄了。

更新于

请我喝[茶]~( ̄▽ ̄)~*

Kalice 微信支付

微信支付

Kalice 支付宝

支付宝