我有一个WebApi Route,可以发出Amazon S3的异步请求。请求数量为数千。它看起来像这样:
for (var i = 0; i < pdfs.Count; i++)
{
//stuff ...
var getPdfClient = new RestClient(pdf.Url);
var getPdfRequest = new RestRequest(Method.GET);
getPdfRequest.AddParameter("pdfIndex", i);
getPdfClient.ExecuteAsync(getPdfRequest, getPdfResponse => // Download the PDF async
{
//do stuff on response
}
}
如上所述,这导致在如此多的请求之后发生超时响应。
通过增加请求超时request.Timeout = 14400000;
通过在执行异步之前放置Thread.Sleep(100)
,问题确实消失了。这让我相信超时是因为有这么多请求轰炸S3的结果。
显然Thread.Sleep不是正确的答案。在此负载下,我应该更改为与S3正确接口?