如果blob.upload超过60秒,请续订blob租约

时间:2012-10-05 10:44:57

标签: azure timeout azure-storage-blobs blobs

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

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

如果uploadBtyeArray时间因文件大小而异。如何在上传完成之前不断续订租约。

此致 的Vivek

1 个答案:

答案 0 :(得分:8)

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

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

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