如何取消提交至Ray集群的长期运行Ray作业?
如何取消提交至Ray集群的长期运行Ray作业?
看起来你提交了一个会长期运行的Ray作业(毕竟你的square函数sleep了超级久😅),要取消它其实有几种简单的方法,我给你一步步说:
方法一:如果提交作业时记录了Job ID
你调用client.submit_job()的时候,这个方法会返回一个作业ID(job_id)。要是你当时保存了这个ID,直接用JobSubmissionClient的cancel_job()方法就能取消:
比如你可以写一个简单的取消脚本(比如叫cancel_job.py):
from ray.job_submission import JobSubmissionClient # 和你提交作业时用的集群地址一致 client = JobSubmissionClient("https://ray.example.com") # 替换成你的作业ID job_id = "你的作业ID" client.cancel_job(job_id) print(f"已尝试取消作业 {job_id}")
要是你想提前做准备,也可以修改提交脚本submit.py,在提交时就保存并打印作业ID:
# 修改后的submit.py from ray.job_submission import JobSubmissionClient client = JobSubmissionClient("https://ray.example.com") job_id = client.submit_job( entrypoint="python src/main.py", runtime_env={ "working_dir": "./", }, ) # 打印并保存这个ID,方便后续取消 print(f"作业已提交,ID:{job_id}")
方法二:没记录Job ID?先找到它!
要是你当时没保存作业ID也没关系,我们可以先列出集群上的所有作业,定位到目标作业的ID:
你可以写个脚本或者在Python交互环境里执行这段代码:
from ray.job_submission import JobSubmissionClient client = JobSubmissionClient("https://ray.example.com") # 获取集群上所有作业的列表 jobs = client.list_jobs() # 遍历作业,根据状态、提交脚本等信息找到目标作业 for job in jobs: # 比如通过运行状态、入口命令来匹配你要取消的作业 if job.status == "RUNNING" and job.entrypoint == "python src/main.py": target_job_id = job.job_id print(f"找到目标作业:{target_job_id}") # 执行取消操作 client.cancel_job(target_job_id) print(f"已取消作业 {target_job_id}")
方法三:用Ray CLI工具(更快捷)
如果你本地装了Ray CLI,并且能连接到目标集群,用命令行操作会更直接:
- 先设置集群地址:
export RAY_ADDRESS=https://ray.example.com
- 列出所有作业找到目标ID:
ray job list
- 找到ID后执行停止命令:
ray job stop <你的作业ID>
不管用哪种方法,都能快速把那个长期运行的作业停下来啦!
备注:内容来源于stack exchange,提问作者Hongbo Miao
相关产品推荐
相关产品推荐

