HttpClient每秒请求限制数据

时间:2018-12-17 02:54:28

标签: c# httprequest throttling

我需要发送请求到REST API端点,但是有一个限制(由API施加)-我发送的速度不能超过10 MB / s。

每个请求的大小都是固定的(为简单起见,假设1 MB)。

我可以创建10个请求的集合,并等到所有请求都完成为止;如果传递的时间少于一秒,我将等待发送另一轮请求。

这很好,我发现this question处理了此问题。

但是,我不受每秒呼叫数的限制,而是每秒受到数据的限制!

这意味着,如果某些请求尚未完成,则它们可能仍在发送数据。这意味着我将必须等待所有请求完成才能开始下一轮。

极端情况可能是1个请求需要很长时间(例如5秒),而所有其他请求都需要0.9秒。我可以再发起9个请求的回合,而5秒的请求要花一些时间才能完成!

不幸的是,我发现的所有解决方案都集中在限制数据(但仅用于流)或请求数量上,而不是两者兼而有之。

如何确保发送HTTP请求时仅使用10 MB / s的速度,而不会被某些需要比其他时间更长的请求阻塞?

0 个答案:

没有答案