我寫了一個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