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 规范。您可以使用它来生成其他语言的客户端库。