gpt4 book ai didi

azure - 将流写入 blob 时租用 blob,直至完成

转载 作者:行者123 更新时间:2023-12-03 00:43:52 25 4
gpt4 key购买 nike

我想在向其写入流时租用一个 blob,直到它完成。以下代码:

场景 1:

  blob.AcquireLease();
blob.UploadText("Content");
blob.Release();

如果我首先获取 Blob 的租约,则需要上传内容的内容会抛出异常,因为 Blob 已被锁定。

场景 2:

  blob.uploadText("Content");
blob.AcquireLease();
blob.Release();

由于我将内容同步上传到 blob,因此只有在上传完成时才会执行 blob.AcquireLease() 语句。如果是这种情况,这样做的好处是什么。

  1. 基本上,我正在寻找建议,在开始上传内容之前可以锁定/租用 blob,并在上传完成后释放锁定。
  2. 我们只能租用一个 blob 90 秒(默认情况下)。如果 blob.upload 需要超过 90 秒(考虑到文件大小为 100MB),我想知道如何继续续订租约直到上传完成。

最佳答案

如果您拥有租约,则只能修改租用的 blob。这意味着您必须将租约与您的请求一起传递。

类似这样的代码应该可以工作(警告:未经测试,甚至未编译):

var leaseId = blob.AcquireLease();
blob.UploadText("Content", Encoding.UTF8, AccessCondition.GenerateLeaseCondition(leaseId), null);
blob.ReleaseLease(AccessCondition.GenerateLeaseCondition(leaseId));

想一想,你上面的代码还能工作吗? ReleaseLease 至少需要一个参数,不是吗?

对于你的第二个问题,我认为默认情况下租约最长为 60(而不是 90)秒。早在存储客户端库支持租约之前,我就为此构建了自己的代码,并创建了一个名为 AutoRenewLease 的类,该类每 45 秒更新一次租约,以确保我不会丢失它。您可以在 https://github.com/smarx/WazStorageExtensions 找到代码。类似的东西应该适合你。

关于azure - 将流写入 blob 时租用 blob,直至完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12763099/

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