咨询google-cloud-compute函数返回值及ExtendedOperation对象详情
google-cloud-compute 接口返回 ExtendedOperation 对象说明
目前google-cloud-compute 客户端中所有涉及资源创建、更新、删除的异步接口(比如互联附件的insert方法),文档仅标注返回google.api_core.extended_operation.ExtendedOperation对象,没有给出对象的具体定义和使用方式,实际可用的核心属性、方法如下:
核心属性与方法
name: 字符串类型,GCP侧生成的操作唯一标识,可用于跨进程查询对应操作的状态done: 布尔值,标记操作是否进入终态,True代表操作已经执行结束(包含成功、失败两种结果),False代表操作仍在运行中metadata: Protobuf 结构体,存储操作关联的元信息,不同接口返回的metadata字段有差异,通用字段包含操作类型、目标资源路径、操作发起时间、进度占比、操作用户身份等result(timeout=None): 阻塞方法,调用后会等待直到操作执行完成,操作成功时返回对应接口的响应结构体,操作失败时直接抛出对应API异常(包含参数错误、权限不足、配额超限等具体错误信息),可传入timeout参数设置最大等待时长,超时会抛出超时异常exception(timeout=None): 阻塞方法,等待操作完成后,若操作成功返回None,若操作失败返回对应的异常对象,不会主动抛出错误cancel(): 方法,向GCP端提交操作取消请求,返回布尔值标记取消请求是否提交成功,已经进入终态的操作无法被取消
常规使用示例
from google.cloud import compute_v1 # 初始化互联附件客户端 client = compute_v1.InterconnectAttachmentsClient() # 发起创建请求,接口不会等待操作完成,立即返回ExtendedOperation对象 operation = client.insert( project="你的项目ID", region="目标区域", interconnect_attachment_resource=compute_v1.InterconnectAttachment( name="测试互联附件名称" ) ) # 等待操作完成,处理结果 try: create_resp = operation.result() print(f"操作执行成功,操作ID:{operation.name}") except Exception as err: print(f"操作执行失败,错误信息:{str(err)}")
注意:不建议自行实现轮询
done字段的逻辑判断操作状态,result()方法内部已经封装了适配GCP接口限流规则的轮询策略和退避逻辑,直接调用即可。
内容的提问来源于stack exchange,提问作者it_works_on_my_computer
相关产品推荐
相关产品推荐

