Ray 作业 REST API#

在底层,Python SDK 和 CLI 都调用运行在 Ray 头节点上的作业服务器。如果需要,你也可以直接通过 HTTP 向相应的端点发送请求。

继续阅读示例,或跳转到OpenAPI 规范

提交作业

import requests
import json
import time

resp = requests.post(
    "http://127.0.0.1:8265/api/jobs/", # Don't forget the trailing slash!
    json={
        "entrypoint": "echo hello",
        "runtime_env": {},
        "job_id": None,
        "metadata": {"job_submission_id": "123"}
    }
)
rst = json.loads(resp.text)
job_id = rst["job_id"]
print(job_id)

查询和轮询作业状态

start = time.time()
while time.time() - start <= 10:
    resp = requests.get(
        f"http://127.0.0.1:8265/api/jobs/{job_id}"
    )
    rst = json.loads(resp.text)
    status = rst["status"]
    print(f"status: {status}")
    if status in {JobStatus.SUCCEEDED, JobStatus.STOPPED, JobStatus.FAILED}:
        break
    time.sleep(1)

查询日志

resp = requests.get(
    f"http://127.0.0.1:8265/api/jobs/{job_id}/logs"
)
rst = json.loads(resp.text)
logs = rst["logs"]
print(logs)

列出所有作业

resp = requests.get(
    "http://127.0.0.1:8265/api/jobs/"
)
print(resp.json())
# {"job_id": {"metadata": ..., "status": ..., "message": ...}, ...}

停止作业

import json
import time
import requests

resp = requests.post(
    "http://127.0.0.1:8265/api/jobs/{job_or_submission_id}/stop",
)
rst = json.loads(resp.text)
json = rst.json()
stopped = json["stopped"]
print(stopped)

OpenAPI 文档 (Beta)#

我们提供了 Ray 作业 API 的 OpenAPI 规范。你可以使用它为其他语言生成客户端库。

查看 Ray 作业 REST API OpenAPI 文档