Из-за ограничения рейтинга твиттера на 180 запросов за 15 минут. Я сделал эту реализацию и отложил задачу. Но, похоже, это не работает. В чем проблема?Выполнение задержки с заданием
То, что я реализовал, на самом деле дает 15 минут ожидания после запроса 180. Является ли моя реализация правильной?
var currentRequestIndex = 1;
var timeToDelay = 0;
foreach (var item in items)
{
var contactFeed = item;
if(currentRequestIndex % 180 == 0)
{
timeToDelay = currentRequestIndex*5000;
}
Delay(timeToDelay * 5000).ContinueWith(_ => Task.Factory.StartNew(
() =>
-- call to twitter api here
));
currentRequestIndex++;
}
public Task Delay(int milliseconds)
{
var tcs = new TaskCompletionSource<object>();
new Timer(_ => tcs.SetResult(null)).Change(milliseconds, -1);
return tcs.Task;
}
Спасибо, что вы сделали, добавит задержку для каждого запроса? То, что мне действительно нужно на 1-15 минут, может быть сделано. то через 2-15 минут может быть сделан еще 180 запросов. Я реализовал таким образом. –
Проверьте мои изменения. Я думал, вы пытаетесь сделать то, что делает мое первое решение. В любом случае, оба вышеупомянутых будут достаточными, но решение 2 лучше, поскольку оно использует только одну «задачу» на 180 запросов. –
+1 Еще раз спасибо. С решением 2, как он будет делать только 180 запросов за 15 минут? Можете ли вы объяснить код? я не видел никаких проверок в течение 15 минут и 180 запросов. –