Публикация AWS Lambda занимает много времени и не завершает вызов C # - PullRequest
0 голосов
/ 14 октября 2018

Почему время ожидания лямбда-функции или иногда не заканчивается, когда я публикую его через S3 PUT?Я пытался увеличить время и память.Но когда я пытаюсь заменить список только 20 записями, он публикуется или иногда занимает много времени, и вызов никогда не заканчивается, пока не появится ошибка подписи.

Я пытаюсь вызвать API и сохранить данные ответов в CSV.Итерация по httpwebrequest.У меня есть динамический список, который также вызывается другим API и передается по URL-адресу ниже

List<string> list = contains 50 or more records

public async Task<List<string>> GetData(List<string> list, 
X509Certificate2 certificate, string token, string 
bucket, string key)
    {
        List<string> listofData = new List<string>();
        MemoryStream fileStream = new MemoryStream();

        listofData.Add("The headers go here");

        for (int i = 0; i <= list.Count -1; i++)
        {

            try
            {
                //Can't include the real url 
                var URL = "https://sample"+list[i]+"/data";

                string dataResponse = "";
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
                request.Method = "GET";
                request.ContentType = "application/x-www-form-urlencoded";
                request.Accept = "Accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                request.Headers.Add("Authorization", "Bearer " + token);
                request.Headers.Add("Connection", "Keep-Alive");
                request.Headers.Add("Accept", "application/json");
                request.ClientCertificates.Add(certificate);

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                {
                    while (!sr.EndOfStream)
                    {
                        dataResponse = sr.ReadLine();
                    }
                }


                JObject parseData = JObject.Parse(dataResponse);

                IList<JToken> outputSample = parseData["sampleData"].Children().ToList();

                IList<SampleData> searchResults = new List<SampleData>();


                foreach (JToken result in outputSample)
                {
                    SampleData searchResult = result.ToObject<SampleData>();
                    searchResults.Add(searchResult);

                }




                foreach (SampleData card in searchResults)
                {
                    //getter and setter for the Data 
                    var output = string.Format(data.A + "," + data.B + "," + data.C + "," + data.C + "," + data.D + "," + data.E 
                    data.A + "," + data.B + "," + data.C + "," + data.C + "," + data.D + "," + data.E 
                    data.A + "," + data.B + "," + data.C + "," + data.C + "," + data.D + "," + data.E );

                    listofData.Add(output);

                }



            }
            catch (Exception e)
            {
                context.Logger.Log(e.Message);
            }

        }

        string convertToCSV = convertToCSV(listofData, fileStream);

        string uploadToBucket = await uploadToBucket(bucket, key, fileStream);

        return listofData;
    }

Как я могу выполнить итерацию httpwebrequest и динамически вызывать все API без сбоев или истечения времени ожидания?

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