Azure存储NodeJS修改默认超时设置

时间:2015-10-08 18:54:46

标签: node.js azure-storage azure-storage-blobs

我想知道是否可以更改Azure存储BlobService的默认超时设置。从文档中我可以看到默认设置是:

  • 要获得blob,获取页面范围或获取阻止列表的调用,每兆字节需要2分钟才能完成。如果操作平均每兆字节超过2分钟,则会超时。

  • 每兆字节允许写入blob,写入块或写入页面10分钟。如果操作平均每兆字节超过10分钟,则会超时。

查看源代码,我看到BlobService.getServiceProperties和setServiceProperties列出了这两个参数:

  • @param {int} [options.timeoutIntervalInMs]用于请求的服务器超时间隔(以毫秒为单位)。
  • @param {int} [options.maximumExecutionTimeInMs]发出此请求时要使用的所有可能重试的最长执行时间(以毫秒为单位)。最大执行时间间隔从客户端开始构建请求时开始。在执行请求时以及执行重试之前,会间歇性地检查最大执行时间。

这两个参数是否与上述项目相同?

现在,当我尝试使用以下代码使用getServiceProperties时,除了日志记录,指标和cors数据之外,我没有得到任何其他信息。这是Github页面上的内容

blobSvc.getServiceProperties(function(error, result, response) {
    if (!error) {
        console.log('Result: ', result);
        console.log('Response: ', response);
    } else {
        console.log(error);
    }
});

Result:  { Logging:
   { Version: '1.0',
     Delete: false,
     Read: false,
     Write: false,
     RetentionPolicy: { Enabled: false } },
  HourMetrics:
   { Version: '1.0',
     Enabled: true,
     IncludeAPIs: true,
     RetentionPolicy: { Enabled: true, Days: 7 } },
  MinuteMetrics:
   { Version: '1.0',
     Enabled: false,
     RetentionPolicy: { Enabled: false } },
  Cors: {} }
Response:  { isSuccessful: true,
  statusCode: 200,
  body:
   { StorageServiceProperties:
      { Logging: [Object],
        HourMetrics: [Object],
        MinuteMetrics: [Object],
        Cors: '' } },
  headers:
   { 'transfer-encoding': 'chunked',
     'content-type': 'application/xml',
     server: 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0',
     'x-ms-request-id': '45a3cfeb-0001-0127-0cf7-0149a8000000',
     'x-ms-version': '2015-02-21',
     date: 'Thu, 08 Oct 2015 18:32:36 GMT',
     connection: 'close' },
  md5: undefined }

所以我真的觉得我对文档之间的不匹配感到困惑,如果甚至可以修改任何超时设置。

2 个答案:

答案 0 :(得分:2)

超时设置不是与服务相关联的属性,而是与存储库调用相关联的属性'。 timeoutIntervalInMs设置和maximumExecutionTimeInMs设置是您可以在'选项'上设置的参数。几乎每个操作都可以传入的对象(包括上传和下载blob)。因此,如果您想修改给定操作的超时,只需在'选项'上传递所需的设置。调用库时对象。

' timeoutIntervalInMs'是对Azure存储服务的请求中发送的超时。这是服务在超时之前尝试完成请求所花费的时间。这是您在此处提到的文档中的设置 - https://msdn.microsoft.com/en-us/library/azure/dd179431.aspx 如果对Storage Client的调用向Storage Service发出多个HTTP(S)请求,则每次调用都会传递此值。

' maximumExecutionTimeInMs'是客户端超时。 Storage Client通过该单个API调用对所有存储请求进行跟踪。例如,如果您在客户端中配置了重试,则在每次可能的重试之前将检查此值,并且如果超过“最大执行时间”,则重试将不会继续。自第一次请求开始以来已过去。

希望这是有道理的。

答案 1 :(得分:2)

使用超时选项的示例调用是:

var options = { maximumExecutionTimeInMs: 1000 };
blobSvc.createBlockBlobFromLocalFile('mycontainer', 'myblob', 'test.txt', options, function(error, result, response) {
  if(!error) { 
    // file uploaded 
  } 
});

您可能还想查看API及其选项:http://azure.github.io/azure-storage-node/BlobService.html

相关问题