我需要发送请求到REST API端点,但是有一个限制(由API施加)-我发送的速度不能超过10 MB / s。
每个请求的大小都是固定的(为简单起见,假设1 MB)。
我可以创建10个请求的集合,并等到所有请求都完成为止;如果传递的时间少于一秒,我将等待发送另一轮请求。
这很好,我发现this question处理了此问题。
但是,我不受每秒呼叫数的限制,而是每秒受到数据的限制!
这意味着,如果某些请求尚未完成,则它们可能仍在发送数据。这意味着我将必须等待所有请求完成才能开始下一轮。
极端情况可能是1个请求需要很长时间(例如5秒),而所有其他请求都需要0.9秒。我可以再发起9个请求的回合,而5秒的请求要花一些时间才能完成!
不幸的是,我发现的所有解决方案都集中在限制数据(但仅用于流)或请求数量上,而不是两者兼而有之。
如何确保发送HTTP请求时仅使用10 MB / s的速度,而不会被某些需要比其他时间更长的请求阻塞?