Самый быстрый способ читать файлы BLOB-объектов Azure параллельно - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь загрузить файлы BLOB-объектов из Azure с помощью приведенного ниже кода

Способ загрузки:

private static async Task<string> GetPriceString(int seriesId) {
    var maxRetries = 15;
    var storage = CloudStorageAccount.Parse("Storage Account Connection String");
    var blob = storage.CreateCloudBlobClient().GetContainerReference("Container Name")
        .GetBlockBlobReference($"{seriesId}.csv");

    var priceString = await Policy.Handle<Exception>()
        .WaitAndRetryAsync(maxRetries, attempt => TimeSpan.FromSeconds(attempt * 0.5))
        .ExecuteAsync(async () => await blob.DownloadTextAsync());
    return priceString;
}

Телефонный код:

int[] seriesIds = { 10, 100 };
List<Task<string>> tasks = new List<Task<string>>();
foreach(var seriesId in seriesIds) {
    tasks.Add(GetPriceString(seriesId));
}

await Task.WhenAll(tasks);

Работает, но проблема в том, что для чтения 100 файлов BLOB-файлов требуется около 30 секунд (размер каждого файла составляет около 200 КБ).Учитывая размер файлов, скорость чтения очень низкая.

Есть ли лучшая альтернатива для параллельной загрузки файлов, например некоторый собственный код Azure вместо того, чтобы мы вручную вызывали его параллельно?

...