C# 如何使用节流API而不达到限制?

C# 如何使用节流API而不达到限制?,c#,asp.net-mvc-5,rate-limiting,C#,Asp.net Mvc 5,Rate Limiting,我正在试图弄清楚如何有效地使用一个每秒有5个请求限制的API,而不达到这个限制。如果请求达到限制,我将从API获得错误响应。睡眠(200)感觉不是一个合适的解决方案,因为我需要效率 foreach (Foo foo in fooList) { try { // Max 5 API calls per second! How? ThirdPartyResponse response = ContactThirdPartyApi(foo);

我正在试图弄清楚如何有效地使用一个每秒有5个请求限制的API,而不达到这个限制。如果请求达到限制,我将从API获得错误响应。睡眠(200)感觉不是一个合适的解决方案,因为我需要效率

foreach (Foo foo in fooList)
{
    try
    {
        // Max 5 API calls per second! How?
        ThirdPartyResponse response = ContactThirdPartyApi(foo);

        // do something with response
        ...
    }
}
我最好使用一些后台工作人员来处理这些电话,但我如何控制每秒发出的请求的nr?我试着用Hangfire来解决这个问题,但对于这种类型的限制控制,它似乎并不起作用


因为我可以启动请求,并且知道当我收到响应时,应该可以跟踪有多少已启动和完成,并确保每秒不超过5次。但是怎么做呢?欢迎提出任何建议

您可以使用or限制并发请求的数量,然后需要添加时间元素以确定何时可以释放它

您可以将其合并到API调用实现中。IIRC,我在以前的项目中成功地将它与RestSharp相结合


您可能希望将实现稍微修改为。

这太完美了!谢谢:DNo probs,很乐意帮忙!你怎么用这个?这是我正在寻找的解决方案