Я написал ограничитель скорости API для использования с API Last.fm.Ограничитель скорости API
Tos.Snd Last.fm утверждает, что я не могу сделать более 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