小编tho*_*ean的帖子

从 S3 并行下载文件(AWS .NET SDK)

我无法AmazonS3Client.GetObject并行下载文件。代码如下:

public async Task<string> ReadFile(string filename)
{
    string filePath = config.RootFolderPath + filename;
    var sw = Stopwatch.StartNew();
    Console.WriteLine(filePath + " - start");
    using (var response = await s3Client.GetObjectAsync(config.Bucket, filePath))
    {
        Console.WriteLine(filePath + " - request - " + sw.ElapsedMilliseconds);
        using (var reader = new StreamReader(response.ResponseStream))
        {
            return await reader.ReadToEndAsync();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是这样调用的:

var tasks = (from file in files select ReadFile(file)).ToArray();
await Task.WhenAll(tasks);
Run Code Online (Sandbox Code Playgroud)

这导致请求按顺序返回(尽管不是按顺序)。我阅读了大约 50 个小文件,因此GetObjectAsync最后一次阅读需要大约 25 秒的时间。相反,我希望我可以在 2-3 秒内读取 50 个文件。

我已经验证过:

  1. 我在任务池中。所以同步上下文不在混合中。我还在ConfigureAwait(false) …

amazon-s3 aws-sdk

7
推荐指数
0
解决办法
1346
查看次数

标签 统计

amazon-s3 ×1

aws-sdk ×1