gpt4 book ai didi

azure - 批量查询异步复制 Blob Azure API 的状态

转载 作者:行者123 更新时间:2023-12-02 23:52:08 25 4
gpt4 key购买 nike

不久前,我问过一个question关于如何将大量 blob 从一个帐户复制到另一个帐户。我发现的最佳解决方案是使用新的 Copy Blob API允许在帐户之间复制 blob,而无需下载它们。

从那时起,我测试了新的 API(现在可以在 Azure SDK 中使用,至少在最新的 gitHub version 中),我的基准测试显示出显着的改进 - 虽然复制 90MB 需要 1.5 分钟Blob 的“旧方式”(即下载,然后上传),通过 Copy Blob 复制只花了 10 秒。这是个好消息。

现在,坏消息是:复制 Blob API 是异步的,这意味着它会立即返回,我需要轮询目标 Blob 的属性以查明复制何时完成。原则上这很棒,但当我有数千个 blob 需要复制时,效率极低。

所以我的问题是:使用 Copy Blob API 将数千个(在我的例子中,超过 600,000 个)Blob 从一个存储帐户复制到另一个存储帐户时,有什么好的、有效的方法可以确定复制何时完成?

这里有一些代码,速度非常慢,可以找出完成的百分比:

        foreach (ICloudBlob blob in cloudBlobContainer.ListBlobs())
{
totalCount++;

// TOO SLOW!
ICloudBlob blobDetails = cloudBlobContainer.GetBlobReferenceFromServer(blob.Name);

if (blobDetails.CopyState.Status == CopyStatus.Success)
{
successCount++;
}
}

最佳答案

CloudBlobContainer.ListBlobs 方法采用名为 blobListingDetails 的参数,该参数描述要包含在列表中的内容。如果指定 BlobListingDetails.Copy,列表还将包含复制属性。

请引用MSDN article了解更多信息。

关于azure - 批量查询异步复制 Blob Azure API 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13496177/

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