Azure Batch Python:如何仅更新作业的OnAllTasksComplete属性
如何优雅地仅更新Azure Batch作业的OnAllTasksComplete属性
要避免更新OnAllTasksComplete时重置作业的其他属性,核心思路是基于现有作业的完整属性构建更新参数,只修改目标字段,其余属性沿用原有值。
具体步骤
获取当前作业的完整配置
先拉取目标作业的所有现有属性,确保后续更新时能保留这些配置:existing_job = batch_service_client.job.get(job_id)构建仅含目标修改的更新参数
实例化JobUpdateParameter时,除了设置on_all_tasks_complete,还要将现有作业的其他关键属性(如约束、池信息、优先级等)一并传入,避免被重置为默认值:from azure.batch import batchmodels update_param = batchmodels.JobUpdateParameter( on_all_tasks_complete=batchmodels.OnAllTasksComplete.terminate_job, constraints=existing_job.constraints, pool_info=existing_job.pool_info, priority=existing_job.priority, # 根据作业实际配置,添加其他需要保留的属性,比如job_manager_task、job_preparation_task等 ) # 执行更新操作 updated_job = batch_service_client.job.update(job_id=job_id, job_update_parameter=update_param)
关键说明
Azure Batch的作业更新API不会自动保留未指定的属性,若仅传入on_all_tasks_complete,未提及的属性会被重置为默认值(比如约束会被清空)。因此必须显式传入需要保留的原有属性,才能实现仅更新目标字段的效果。
内容的提问来源于stack exchange,提问作者ZirconCode
相关产品推荐
相关产品推荐

