Beispiel #1
0
        private void DownloadFtpFiles44(List <FileCashes> fileCashes)
        {
            DateTime StartDate = DateTime.Now;

            _logger.LogInformation($"Начало загрузки {fileCashes.Count} архивов FZ44 {StartDate}...");
            _logger.LogDebug($"Начало загрузки {fileCashes.Count} архивов FZ44 {StartDate}...");

            var parallelOptions = new ParallelOptions()
            {
                //MaxDegreeOfParallelism = 1,
                MaxDegreeOfParallelism = _fzSettings44.Parallels,
            };

            Parallel.ForEach(fileCashes, parallelOptions, item =>
            {
                FtpClient client = new FtpClient(_commonSettings.FtpCredential.FZ44.Url)
                {
                    Credentials   = new NetworkCredential(_commonSettings.FtpCredential.FZ44.Login, _commonSettings.FtpCredential.FZ44.Password),
                    RetryAttempts = 5
                };

                try
                {
                    client.Connect();

                    _logger.LogInformation($"Загрузка архива FZ44 {item.Full_path}...");
                    client.DownloadFile(_fzSettings44.WorkPath + item.Full_path, item.Full_path);
                    item.Modifid_date = DateTime.Now;
                    item.Status       = Status.Uploaded;
                    _dataServices.UpdateCasheFiles(item);
                }
                catch (Exception ex)
                {
                    _dataServices.DeleteCasheFiles(item);
                    _logger.LogError(ex, $"Ошибка скачивания архива FZ44 файл перемещён или недоступен: {item.Full_path}");
                    _logger.LogError(ex, ex.Message);
                }
                finally
                {
                    client.Disconnect();
                }
            });

            DateTime EndDate = DateTime.Now;

            _logger.LogInformation($"Загружено {fileCashes.Count} архивов FZ44 {EndDate}... Время загрузки {(EndDate - StartDate).TotalMinutes} минут");
            _logger.LogDebug($"Загружено  {fileCashes.Count} архивов FZ44 {EndDate}... Время загрузки {(EndDate - StartDate).TotalMinutes} минут");
        }