2
當異步/等待發出http請求時(例如使用HttpClient
),默認情況下是否有內置的限制?異步/等待併發http請求的最大數量
像this這樣的問題意味着無限數量的連接將被打開。我的應用程序在循環中執行一批http請求,似乎在大約50個TCP連接上保持不變。
我最初擔心我需要爲節流添加SemaphoreSlim
,但.NET似乎爲我做了這個。 任何人都可以對此有所瞭解嗎?
當異步/等待發出http請求時(例如使用HttpClient
),默認情況下是否有內置的限制?異步/等待併發http請求的最大數量
像this這樣的問題意味着無限數量的連接將被打開。我的應用程序在循環中執行一批http請求,似乎在大約50個TCP連接上保持不變。
我最初擔心我需要爲節流添加SemaphoreSlim
,但.NET似乎爲我做了這個。 任何人都可以對此有所瞭解嗎?
.Net框架中的連接存在限制。例如,這個ServicePointManager
有DefaultConnectionLimit
這允許你限制併發操作。
但是,我不建議將它用於節流。如果你需要控制你的請求,你應該使用SemaphoreSlim
,特別是WaitAsync
,因爲你在async-await
環境中,並且這些請求是IO綁定(並且長)。
使用SemaphoreSlim.WaitAsync
意味着您不會阻塞,並且您異步等待,對於任何其他非限制機制而言都不是這種情況。此外,您不希望在能夠完成操作之前開始操作。
每個服務器有2個連接的限制。你是否連接到相同的服務器? – i3arnon
是的,在這種情況下,我在批量加載場景中反覆擊中同一個端點。我知道Web瀏覽器傳統上有這2個連接限制,但.NET也強制執行它?這是如何運作的? –
[是](http://stackoverflow.com/q/10403944/885318)。 – i3arnon