我写了一个API速率限制器,可以与Last.fm的API一起使用。API速率限制器
Last.fm的Tos指出,我不能每秒发出超过5个请求,每秒发起IP地址的平均时间为5分钟。
这里是我写的类:
public class RateLimiter
{
private static readonly List<DateTime> _requests = new List<DateTime>();
private const double _perMillisecond = 1000.1;
private const int _rateLimit = 5;
private const int _rateLimitCooldownMs = 500;
public static void CheckLimiter()
{
_requests.Add(DateTime.Now);
var requestsDuringRateLimit = _requests.Where(w => (DateTime.Now - w).TotalMilliseconds < _perMillisecond).ToArray();
if (requestsDuringRateLimit.Count() >= _rateLimit)
{
Thread.Sleep(_rateLimitCooldownMs);
_requests.Clear();
Console.Clear();
}
}
}
的CheckLimiter
方法是HttpWebRequest
之前调用启动,则此限制API请求的好方法?
是的,我注意到,我发布后......谢谢! :) – jjdev80