本文讲述如何使用开源进程/任务管理服务Meproc的HTTP API管理整个服务。
Meproc所提供的全部 API 的 URL 都是相同的。
http://ip:port/proc
例如
http://127.0.0.1:8606/proc
在下面的小节中,我们使用curl
命令向您展示 API 的方法、参数和请求正文。
curl -XPOST http://127.1:8606/proc -d '{"name": "task1", "cmd": "sleep 5", "type": "once", "replica": 2, "user": "guest", "deps": ["task0"]}'
要启动任务,您应该发送带有 JSON 正文的 POST 请求。
JSON 主体的所有字段为:
name
:指定任务名称的必填字符串字段。type
指定任务类型的必填字符串字段。 共有三种类型:
once
表示该任务将启动并仅运行一次。daemon
表示该任务的进程将作为守护进程启动并运行。 这意味着如果这些进程中的每一个按预期或意外退出,都将再次启动。cron
表示这是一个 cron 作业。coroutine
表示这是一个 melang 协程任务。cmd
:必填字符串字段,指定 melang 脚本文件路径(如果 type
为 melang
)或任务进程将执行的 shell 命令。replica
必需的整数字段,指定此任务的进程数。user
可选字符串字段,指定任务进程的运行用户。group
可选字符串字段,指定任务进程的运行组。cron
指定 cron 格式表达式的可选字符串字段。 该字段仅在type
为cron
时生效。 该字段的默认值为“* * * * *”。interval
可选整数字段,指定进程退出和再次启动之前之间的秒数。 默认值为“3”。deps
可选字符串数组,指定该任务所依赖的所有任务。curl -XPUT http://127.1:8606/proc?name=task1
我们使用PUT
请求来重新启动请求参数name
指示的任务。
如果发送此请求时任务正在运行,它会先停止,然后再启动。
curl -XDELETE http://127.1:8606/proc?name=task1
我们使用DELETE
请求来停止请求参数name
指示的任务。
所有正在运行的进程都将通过SIGTERM
信号终止。
curl -XGET http://127.1:8606/proc
该 API 将向您显示所有任务和所有正在运行的进程。
响应正文是 JSON,其格式为:
{
"code": 200,
"msg": "OK",
"data": {
"running": [
{
"command": "sleep 5",
"pid": 4321,
"alias": "task1:0"
},
{
"command": "sleep 5",
"pid": 4322,
"alias": "task1:1"
}
],
"tasks": {
"task1": {
"name": "task1",
"cmd": "sleep 5",
"type": "once",
"replica": 2,
"user": "guest",
"deps": [
"task0"
],
"interval": 3,
"last_time": 1699958864,
"run_flag": false,
"start_time": 1699958864,
"running": 0,
"group": null
}
}
}
}
running
字段记录了当前所有正在运行的进程的信息。
tasks
字段记录所有任务,无论是否运行。 它是一个物体。 该对象中的键是任务名称,值是记录任务信息的对象。