提问人:papfan 提问时间:9/13/2023 最后编辑:marc_spapfan 更新时间:9/14/2023 访问量:83
使用 .NET Framework 的批处理异步 API 调用
Batched async API calls using .NET Framework
问:
使用 .NET Framework 中的 C# 批量对外部 API 进行异步调用的推荐方法是什么?如果调用次数超过特定数量,外部 API 会限制请求。
如何批量调用外部 API,然后等待第一批完成,或者等待 x 秒再进行第二批调用?
这样做的原因是为了避免外部 API 限制我们的调用。我知道我可以从外部 API 响应标头中查看 retry-after 标头,然后在受到限制时重试请求,但在这种特殊情况下,我希望避免由于特定原因而受到限制。
例如,假设我想对外部 API 进行总共 100 次调用。我想将它们分 5 批处理成 20 个 API 调用,这样每批 20 个 API 调用仅在前一批完成后或 x 秒后向外部 API 发出请求。
我试过了,但它一次调用了所有 100 个 API。由于我希望对外部 API 的调用是异步的,因此我不想使用,因为它是同步的,在 .NET 框架上不受支持。Task.WhenAll
Parallel.ForEach
Parallel.ForEachAsync
我能想到的唯一解决方案是一次使用并发出 20 个请求,然后执行然后重复调用,直到所有 100 个请求都得到处理。Task.WhenAll
Task.Delay()
Task.WhenAll
在 .NET Framework 中是否有更好的方法来处理此问题?
答: 暂无答案
评论
Parallel.ForEachAsync