Чтение файлов из S3 одновременно - PullRequest
0 голосов
/ 26 сентября 2018

Я вызываю указанный ниже метод для получения файлов из S3.У меня есть список путей к файлам в коллекции.Я вызываю приведенный ниже метод внутри Parallel.Foreach цикла.Метод addRecords() для контейнера является потокобезопасным и гарантирует, что только один поток попадает в критическую секцию.Код пропускает некоторые файлы, и возвращаемый результат содержит меньше записей, чем ожидалось.

Parallel.ForEach(fileListAll, new ParallelOptions { MaxDegreeOfParallelism = 20 }, (currentFile) =>
                {
                    string RecordsRaw = _AmazonS3.GetFileFromS3(currentFile);

                    Container.AddRecords(RecordsRaw);
                });



public string GetFileFromS3(string filePath)
        {
            try
            {
                string ResponseData = null;
                GetObjectRequest Request = new GetObjectRequest
                {
                    BucketName = _AWSConfiguration.S3BucketName,
                    Key = filePath
                };
                using (GetObjectResponse response = _AmazonS3Client.GetObject(Request))
                using (Stream responseStream = response.ResponseStream)
                using (StreamReader reader = new StreamReader(responseStream))
                {
                    ResponseData = reader.ReadToEnd();
                }
                if (!string.IsNullOrEmpty(ResponseData))
                {
                    return ResponseData;
                }
            }
            catch (Exception ex)
            {
                //Removed the code for brevity
            }
            return null;
        }

Я не уверен, как изменить метод GetFileFromS3(), чтобы он мог вызываться несколькими потоками при сохранениипараллелизм.

Пожалуйста, имейте в виду, поскольку это может быть основным вопросом, но я изо всех сил пытаюсь заставить его работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...