【问题标题】:Renew the blob lease if blob.upload takes more than 60 seconds如果 blob.upload 花费超过 60 秒,则续订 blob 租约
【发布时间】:2023-03-18 08:39:01
【问题描述】:

我知道我们可以在 blob 上获得 60 秒或无限期的租约。对于以下代码:

  var account = CloudStorageAccount.DevelopmentStorageAccount;
  var blob = account.CreateCloudBlobClient().GetBlobReference("container/blob");
  var leaseId = blob.AcquireLease();
  blob.UploadByteArray(bytes);
  blob.ReleaseLease(leaseId);

如果 uploadBtyeArray 时间因文件大小而异。我如何继续更新租约直到上传完成。

问候, 维韦克

【问题讨论】:

    标签: azure timeout azure-blob-storage blobs


    【解决方案1】:

    调用AcquireLease 后,您可以启动一个新线程,在租约到期之前不断更新租约。上传完成后,您应该简单地中止执行自动更新的线程。

    您可能想查看 Steve Marx 的 WazStorageExtensions,它带有一个 AutoRenewLease 类(查看 DoOnce 方法)。在内部,AutoRenewLease 类使用这样的线程来保持租约:

                renewalThread = new Thread(() =>
                {
                    while (true)
                    {
                        Thread.Sleep(TimeSpan.FromSeconds(40));
                        blob.RenewLease(leaseId);
                    }
                });
                renewalThread.Start();
    

    【讨论】:

    • 谢谢 Sandrino !!..使用这种方法,异步上传会不会被照顾
    • 我们能否在 blob.upload 上拥有无限租约,一旦上传完成,我们可以将其中断。
    • 是的,但我认为您不能使用 .NET SDK 来执行此操作(如果我是正确的,它仍然使用 2011-08-18)。 REST API 从版本 2012-02-12 msdn.microsoft.com/en-us/library/windowsazure/ee691972.aspx开始支持无限租约
    • @sandrino 是的,但是如果处理 blob 的工作人员死了,没有人会知道再次开始处理 blob:-\
    猜你喜欢
    • 2016-05-05
    • 2018-12-14
    • 2018-03-02
    • 1970-01-01
    • 2021-06-13
    • 2023-03-09
    • 1970-01-01
    • 2018-12-24
    • 2021-08-09
    相关资源
    最近更新 更多