c# - HttpClient 限制每秒数据请求数
问题描述
我需要向 REST API 端点发送请求,但有一个限制(由 API 施加)——我不能发送超过 10 MB/s。
每个请求都有一个固定的大小(为简单起见,我们假设 1 MB)。
我可以创建一个包含 10 个请求的集合并等到所有请求都完成,如果不到一秒,我会在发送另一轮请求之前等待。
这很好,我发现这个问题可以解决这个问题。
但是,我不受每秒调用次数的限制,而是每秒数据量!
这意味着如果某些请求尚未完成,它们可能仍在发送数据。这意味着我必须等待所有请求完成才能开始另一轮。
边缘情况可能是 1 个请求需要很长时间(例如 5 秒),而所有其他请求需要 0.9 秒。我可以开始另一轮 9 个请求,而 5 秒的请求需要时间来完成!
不幸的是,我发现的所有解决方案都集中在限制数据(但针对流)或请求数量上,但不是两者兼而有之。
如何确保在发送 http 请求时只使用 10 MB/s,但不会被一些比其他请求花费更长的时间才能完成的请求阻塞?
解决方案
推荐阅读
- r - 如果没有统计差异,则覆盖 cldList stop
- asp.net - 如何更改在 Visual Studio 代码中启动 asp.net web api 的浏览器?
- android - 导航组件异常“已添加片段”
- c++ - 类的 C++ 模板
- c++ - 通过复制 Abseil 示例使用 STL 实现工厂功能
- python - Python3 | 安装程序 | 如何将excel文件添加到exe
- linux - 如何创建仅包含部分特定路径的 tarball
- spring - Quarkus 框架是从 Spring 框架的核心创建的?
- python-3.x - *args 在 list() 函数的情况下如何工作?
- html - 当我在其他 div 中有 div 时,我不能让它们粘在顶部或底部