Skip to content

ABACUS Standalone Server

hsfzxjy edited this page Aug 15, 2017 · 4 revisions

配置

系统依赖:

  • Linux(需要跑任务队列)
  • Redis

python 依赖安装:

$ pip install -r requirements/abacus-server.txt

自定义配置(将 abacus_server/config.json.example 复制成 abacus_server/config.json):

{
    "ABACUS_JAR_PATH": "指向 .jar 文件的绝对路径",
    "REDIS_URI": "redis链接URL,格式为: redis://:<password>@host:port",
    "ABACUS_DATABASE_PATH": "指向 dirLinux.txt 文件的绝对路径",
    "STORAGE_ROOT": "用于储存上传文件的目录的绝对路径,默认为 /tmp/abacus/"
}

使用

Biohub-Server 根目录下,执行 python -m abacus_server 即可启动服务器。两个可选参数:

  • --port <PORT>:服务器端口号
  • --concurrency <CONCURRENCY>:可以同时运行的任务数量

API

POST /

格式为 multipart/form-data。POST 数据的 file 域为上传的文件。

Query Parameters

  • callback: 通知任务完成的回调 URL(必须带上域名)

Response

格式为 JSON:

{
    "task_id": "标记此次任务的 ID",
    "status": "用于查询任务状态的URL,其实就是 /<task_id>/"
}

如:

{
    "task_id": "f95ac75b-9391-49b9-959c-424e2d6e7e8a",
    "status": "http://host.to.remote.server/f95ac75b-9391-49b9-959c-424e2d6e7e8a/"
}

GET /<task_id>/

查询状态。

Response

格式为 JSON:

{
    "status": "PENDING|SUCCESS|ERROR",
    "result": "此域仅当 status 为 SUCCESS 时存在,为指向输出文件的 URL"
}

如:

{
    "status": "PENDING"
}
{
    "status": "SUCCESS",
    "result": "http://host.to.remote.server/media/output/output1.pdb"
}

关于回调

回调会在任务结束(成功/失败)时发生。回调 URL 会以 GET 的方式调用。

当任务成功时,回调有两个 GET 参数:

  • task_id
  • output:指向输出文件的 URL

当任务失败时,回调有两个 GET 参数:

  • task_id
  • error=True

现存的 BUG(已解决)

使用 Ctrl+C 可以关闭服务器,但若此时仍有 ABACUS 任务在运行,可能会使相关的 java 进程成为“孤儿进程”(Orphan Process)滞留在内存中,需手动将其杀掉。此问题正在解决中。