gpt4 book ai didi

python - Azure python SDK - AzureHttpError : The condition specified using HTTP conditional header(s) is not met

转载 作者:行者123 更新时间:2023-12-01 03:30:26 28 4
gpt4 key购买 nike

我尝试使用以下代码从 Azure Blob 存储下载大型 VHD 文件 (30GB):

blob_service.get_blob_to_path('vhds', '20161206092429.vhd', '20161206092429.vhd')

其中第一个参数是容器名称,第二个参数是 blob 名称,第三个参数是保存它的本地文件/路径。这个 30GB 的下载工作正常,但突然我开始收到此错误:

AzureHttpError: The condition specified using HTTP conditional header(s) is not met. ConditionNotMetThe condition specified using HTTP conditional header(s) is not met. RequestId:88b6ac24-0001-0001-5ec0-4f490d000000 Time:2016-12-06T12:57:13.5389237Z

下载现在可以在一段随机时间内正常运行:有时很短,有时很长。完整的 30GB 下载量甚至高达 9 或 10GB。

根据这个问题:

Azure Blob: "The condition specified using HTTP conditional header(s) is not met"

304: The condition specified using HTTP conditional header(s) is not met

这似乎是一个竞争条件,但如果不深入研究并处理 SDK 代码,这对解决问题没有多大帮助。对于导致此问题的原因有什么建议吗?因为下载之前可以正常运行?也许 Azure 云出现中断?

最佳答案

当 VHD 发生变化时,其相关的 ETag 也会发生变化。一旦发生这种情况,文件复制操作将不再有效。我相信这就是您通过调用 blob_service.get_blob_to_path() 看到的情况,因为您的 vhd 正在与正在运行的虚拟机一起使用。而且...即使虚拟机处于空闲状态 - 正在运行的操作系统永远不会真正空闲 - 总会有一些后台操作,这些操作可能会写入磁盘。

并不是说它会确保文件复制操作成功,而是您需要在启动复制之前先关闭虚拟机。

或者,您可以制作 VHD 的快照,然后通过快照而不是原始 vhd 进行复制(这样您就可以在复制操作期间继续使用您的 vhd)。

关于python - Azure python SDK - AzureHttpError : The condition specified using HTTP conditional header(s) is not met,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40996188/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com