如何查询Azure中Blob复制操作的状态?(Python代码场景)
如何查询Azure Blob复制操作的实时状态
嘿,我来帮你搞定这个问题!当你调用copy_blob返回的初始状态只是请求发起时的快照,要确认复制是否完成,你需要主动查询目标Blob的属性,里面包含了复制操作的实时状态信息。
具体步骤和代码示例:
- 使用Azure Storage Blob SDK的
get_blob_properties方法,获取目标Blob的完整属性 - 从返回的属性对象中提取复制相关的状态字段
下面是完整的代码片段,直接可以加到你的现有代码里:
# 先获取目标Blob的属性 blob_props = blob_service.get_blob_properties(BLOB_CONTAINER, Destiny) # 提取复制状态关键信息 current_copy_status = blob_props.copy.status copy_operation_id = blob_props.copy.id completion_time = blob_props.copy.completion_time # 根据状态判断结果 if current_copy_status == "success": print(f"复制成功完成!完成时间:{completion_time}") elif current_copy_status == "pending": print(f"复制仍在进行中,请稍后再查。当前状态:{current_copy_status}") elif current_copy_status in ["aborted", "failed"]: # 如果失败,可以查看错误描述 error_msg = blob_props.copy.status_description print(f"复制失败,状态:{current_copy_status},错误信息:{error_msg}")
额外提示:
- 复制状态的可能取值有四个:
pending(进行中)、success(完成)、aborted(已中止)、failed(失败) - 如果你需要持续监控复制进度,可以写一个简单的循环,每隔几秒钟查询一次状态,直到状态不再是
pending为止 - 注意:只有当复制状态为
success时,completion_time字段才会有值
内容的提问来源于stack exchange,提问作者Pedro Kássio
相关产品推荐
相关产品推荐

