C# 异步/等待最大并发http请求数
当Async/Await发出http请求时(例如使用C# 异步/等待最大并发http请求数,c#,async-await,C#,Async Await,当Async/Await发出http请求时(例如使用HttpClient),默认情况下是否内置任何节流功能 像这样的问题意味着将打开无限数量的连接。我的应用程序在一个循环中执行一批http请求,似乎限制在50个TCP连接左右 起初,我担心需要添加信号量lim进行节流,但.NET似乎为我这样做。 有人能解释一下吗?在.Net framework中,连接有一些限制。例如,此ServicePointManager具有DefaultConnectionLimit,允许您限制并发操作 但是,我不建议将其用
HttpClient
),默认情况下是否内置任何节流功能
像这样的问题意味着将打开无限数量的连接。我的应用程序在一个循环中执行一批http请求,似乎限制在50个TCP连接左右
起初,我担心需要添加信号量lim
进行节流,但.NET似乎为我这样做。
有人能解释一下吗?在.Net framework中,连接有一些限制。例如,此
ServicePointManager
具有DefaultConnectionLimit
,允许您限制并发操作
但是,我不建议将其用于节流。如果您需要控制您的请求,您应该使用SemaphoreSlim
,特别是WaitAsync
,因为您处于async wait
环境中,并且这些请求是IO绑定的(并且很长)
使用
SemaphoreSlim.WaitAsync
意味着您不会阻塞并异步等待,这对于任何其他非async
节流机制都是不可能的。此外,在完成操作之前,您不希望启动该操作。每个服务器的连接数限制为2个。您是否连接到相同的服务器?是的,在这种情况下,我在批量加载场景中重复访问相同的端点。我知道web浏览器传统上有这2个连接限制,但.NET也实施了这一限制?这是怎么回事?。