gpt4 book ai didi

c# - HttpClient (C#) 在许多异步请求上失败?

转载 作者:行者123 更新时间:2023-11-30 13:31:25 24 4
gpt4 key购买 nike

我正在使用 HttpClient 异步向外部 api 发出许多请求。我等待所有请求完成,然后在其他代码中使用响应。我的问题是,如果我发出太多请求,当我使用 Task.WhenAll 等待时,我的代码会抛出异常。

此代码最终将并行运行,我的意思是我将同时执行多组此类异步请求(即 10 组 200 个异步请求)。我已经实例化了一个 HttpClient,我正在使用 .NET 4.5 async/await 修饰符,如下所示:

using (var client = new HttpClient())
{
// make a list of tasks
List<Task<HttpResponseMessage>> taskList;
List<MyData> replies;
for (int i = 0; i < MAX_NUMBER_REQUESTS; i++)
{
taskList.Add(client.GetAsync(externalUri);
}

List<HttpResponseMessage> responses = await Task.WhenAll(taskList);

// read each response after they have returned
foreach (var response in responses)
{
var reader = new System.IO.StreamReader(await response.Content.ReadAsStreamAsync());
replies.Add(JsonConvert.DeserializeObject<MyData>(reader.ReadToEnd()));
reader.Close();
}

foreach (var reply in replies)
{
// do something with the response from the external api call...
}
}

我不断收到 TaskCanceledException。对此进行调查后,我发现这可能是超时问题。我不知道如何解决它。在使用 Task.WhenAll 并重复之前,我尝试以 100 个请求对我的请求进行批处理,这很有效。然后,当我与三组 100 个失败的请求并行运行时。我是否遗漏了什么,有人对此有任何见解吗?

最佳答案

调整ServicePointManager.DefaultConnectionLimit .对于海量并发请求,您可以将其设置为int.MaxValue

关于c# - HttpClient (C#) 在许多异步请求上失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21558109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com