Я вызываю HTTP-запросы к API, который имеет ограничение на количество запросов.
Эти HTTP-запросы выполняются в циклах и выполняются очень быстро, в результате чего HttpClient иногда выдает ошибку исключения «10030 App Rate Limit Exceeded», которая является ошибкой 429 HTTP для слишком большого количества запросов.
Я могу решить эту проблему, выполняя Thread.Sleep между каждым вызовом, однако это замедляет работу приложения и не является разумным.
Вот код, который я использую:
public static async Task<List<WilliamHillData.Event>> GetAllCompetitionEvents(string compid)
{
string res = "";
try
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
client.DefaultRequestHeaders.TryAddWithoutValidation("apiKey", "KEY");
using (HttpResponseMessage response = await client.GetAsync("https://gw.whapi.com/v2/sportsdata/competitions/" + compid + "/events/?&sort=startDateTime"))
{
res = await response.Content.ReadAsStringAsync();
}
}
JObject jobject = JObject.Parse(res);
List<WilliamHillData.Event> list = jobject["events"].ToObject<List<WilliamHillData.Event>>();
return list;
}
catch (Exception ex)
{
throw ex;
}
}
Есть ли способ узнать, сколько запросов можно сделать в секунду / минуту? И, возможно, после того, как предел достигнут, уменьшите или выполните Thread.Sleep до тех пор, пока предел не уменьшится вместо выполнения Thread.Sleep каждый раз, когда он вызывается, поэтому я замедляю приложение, когда оно требуется?
Приветствие.