Задать вопрос
@dlysenko1311

Получаю ошибку timeout во время выполнения С# кода в SSIS пакете, как исправить?

Я создал ssis пакет. Собственно, ничего необычного. Выглядит он так:
63c4209a1261e644633531.png

data flow выглядит так:
63c420c2de5a5204450086.png

В data flow елемент Get data это script component в SSIS toolbox. То есть это просто C# скрипт. Этот C# скрипт выполняет следующее:
-создает переменные на сонове параметров, которые я передаю в сам скрипт
-делает первый запрос к апи
-ждет пока статус запроса не станет 200 (так как нужно время чтобы на стороне api сервера сформировался файл, который потом буду скачивать) !!!! В ЭТОМ МЕСТЕ И ВОЗНИКАЕТ ОШИБКА, ТАК КАК ЭТО ЗАНИМАЕТ НЕСКОЛЬКО МИНУТ
-как только статус запроса 200, делаем новый запрос к апи, ьерем от туда файл, обрабатываю этот файл и отдаю в
Output0Buffer строки

Код С# выглядит так:
public override void CreateNewOutputRows()
    {
        string baseurl = Variables.baseurl;
        string start_date = Variables.startdate;
        string OAuth = Variables.OAuth;
        string ids = Variables.ids;
        

        string end_date = DateTime.Today.ToString("yyyy-MM-dd");

        string url = $"{baseurl}application_id={ids}&date_since={start_date}&date_until={end_date}";
        

        // делаем первый запрос
        var request = WebRequest.Create(url);
        request.Method = "GET";
        request.Headers.Add("Authorization", OAuth);
        var response = (HttpWebResponse)request.GetResponse();
        var ResponseStatusCode = (int)response.StatusCode;


        // ждем пока сформируется файл. Из-за того что файл долго формируется и выпадает ошибка 
        while (ResponseStatusCode != 200)
        {
            Thread.Sleep(5000);
            request = WebRequest.Create(url);
            request.Method = "GET";
            request.Headers.Add("Authorization", OAuth);
            response = (HttpWebResponse)request.GetResponse();
            ResponseStatusCode = (int)response.StatusCode;
            
        }

       // файл уже софрмировался. Скачиваем файл
       var webStream = request.GetResponse().GetResponseStream();
       var reader = new System.IO.StreamReader(webStream);
       var data = reader.ReadToEnd();
       var jobject = JObject.Parse(data)["data"];

       foreach (var obj in jobject)
       {
           
           Output0Buffer.AddRow();
           Output0Buffer.eventdatetime = (DateTime)obj["event"]; 
           Output0Buffer.eventname = (string)obj["name"];
           Output0Buffer.appmetricadeviceid = (string)obj["app"].ToString();
           Output0Buffer.city = (string)obj["city"];
           Output0Buffer.devicetype = (string)obj["dev"];


        }

    }


Я запускаю SSIS пакет, и когда дело доходит то этого C# скрипта, он сначала работает пару минут, а потом выдает такую ошибку:
63c42315e3257934095940.png

Как это исправить?
  • Вопрос задан
  • 40 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы