AWS Lambda需要很长时间才能发布,并且尚未完成对C#的调用

时间:2018-10-14 11:34:00

标签: c# amazon-web-services aws-lambda httpwebrequest

为什么通过S3 PUT发布lambda函数超时或有时无法完成?我试图增加时间和记忆。但是,当我尝试仅用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,而又不会导致失败或超时?

0 个答案:

没有答案