我需要更新现有容器中的Blob元数据。我目前在一个容器中有超过5000个Blob。到目前为止,我的工作:
斑点通过container.ListBlobsSegmentedAsync()
和BlobContinuationToken
然后我从blob.UpdateMetadataAsync()
聚合任务,并通过Task.WhenAll()
并发运行它们
总而言之,整个过程大约要花10秒钟在我的机器上。但是据我了解,我给网络造成了压力,因为我需要向Azure发送5k请求,并且它需要处理所有请求。
有更好的方法吗?我可以发送一个批处理请求来执行任务吗,还是只能使用当前的方法?
谢谢!
答案 0 :(得分:0)
我可以发送一个批处理请求来执行任务吗,还是可以使用当前方法?
我不认为有一种方法可以发送批处理请求。
从Azure storage blob Rest API,您可以知道没有这样的Rest API。
但是,如果您对Azure存储有任何想法,可以将feedback交给Azure团队。
好的。您可以使用异步并发方式来更新Blob。
有更好的方法吗?
如果您不想从客户端发送这么多请求。
我建议您可以使用Azure function http trigger来做到这一点。并在Azure函数中实现更新Blob逻辑。
有关Azure功能的更多信息,请参考此document。
答案 1 :(得分:0)
用于Blob存储的批处理API为now in preview。不幸的是,目前它仅支持DeleteBlob和SetBlobTier操作,但即将支持更多操作。
文档:https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch