Ray Jobs REST API#

在底层,Python SDK 和 CLI 都会向运行在 Ray 头节点上的作业服务器发出 HTTP 调用。如果需要,您也可以直接通过 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": ...}, ...}

OpenAPI 文档 (Beta)#

我们为 Ray Job API 提供了一个 OpenAPI 规范。您可以使用它来生成其他语言的客户端库。

查看 Ray Jobs REST API OpenAPI 文档