2015-10-08 59 views
1

我想知道是否可以爲我更改Azure存儲BlobService的默認超時設置。從文檔我可以看到,默認設置是:Azure存儲NodeJS修改默認超時設置

  • 調用來獲得一個blob,獲得頁面範圍,或者得到一個塊列表允許每兆字節的2分鐘完成。如果平均每兆字節操作時間超過2分鐘,則操作會超時。

  • 允許寫入blob,寫入數據塊或寫入頁面每個兆字節需要10分鐘才能完成。如果一項操作的平均時間超過每兆字節10分鐘,它將超時。

通過源代碼尋找我看到BlobService.getServiceProperties和setServiceProperties都列出了這兩個參數:

  • @參數{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

與超時選項示例調用:

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

2

超時設置不是「與服務相關的屬性」,而是「與調用存儲庫相關聯的屬性」。 timeoutIntervalInMs設置和maximumExecutionTimeInMs設置是您可以在'options'對象上設置的參數,可以通過幾乎所有操作(包括上傳和下載blob)來傳入。因此,如果您想修改給定操作的超時時間,只需在調用庫時將'options'對象的所需設置傳遞給該對象。

'timeoutIntervalInMs'是在對Azure存儲服務的請求中發送的超時。這是服務在超時前嘗試完成請求的時間。這是您在此提及的文檔中的設置 - https://msdn.microsoft.com/en-us/library/azure/dd179431.aspx 如果進入存儲客戶端的呼叫向存儲服務發出多個HTTP(S)請求,則此值將與每個呼叫一起傳遞。

'maximumExecutionTimeInMs'是客戶端超時。這是由存儲客戶端通過該單一API調用所做的所有存儲請求進行跟蹤的。例如,如果您在客戶端中配置了重試次數,則將在每次潛在重試之前檢查此值,並且如果自第一次請求開始以來已超過'maximumExecutionTimeInMs'時,重試將不會繼續。

希望這是有道理的。

+0

你貼什麼有意義除了選擇對象,我可以通過每個操作。將示例調用blobSvc.createBlockBlobFromLocalFile('mycontainer','myblob','test.txt',選項,函數(錯誤,結果,響應){ } );? –