Я хочу применить задержку / ожидание между каждым вызовом API.Я использую триггер очереди.Первая функция создаст API и сохранит API в очереди, а следующая функция вызовет API и получит ответ.Я хочу, чтобы моя функция состояла в том, чтобы подождать минуту после первого вызова API и вызвать следующий API и так далее.Я применил
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(60));
Но это будет ждать минуты, чтобы вызвать первый API, как только задержка завершится, он вызывает все API в очереди без какой-либо задержки.
[01/ 12/2018 10: 11 : 05] Задержка минимального апикаля https://weblink.com/api/v2/topics?patentID=10 [12.01.2008 10: 11 : 06] Задержка минимального апикаля https://weblink.com/api/v2/topics?patentID=11 [01/12/2018 10: 11 : 06] Задержка минимального апикаля https://weblink.com/api/v2/topics?patentID=12 [01/12/2018 10: 11 : 06]Задержка минимального апикаля https://weblink.com/api/v2/topics?patentID=13
Я ожидаю
[12.01.2008 10: 11 : 05] Задержка минимального апикаля https://weblink.com/api/v2/topics?patentID=10 [01/12/2018 10: 12 : 06] Задержка минимального apicall https://weblink.com/api/v2/topics?patentID=11 [12.01.2008 10: 13 : 06] Задержка минимальногоapicall https://weblink.com/api/v2/topics?patentID=12 [01/12/2018 10: 14 : 06] Задержка min apicall https://weblink.com/api/v2/topics?patentID=13
Пример кода: код, который создает вызов API, помещается вqueue.
public static void Run([TimerTrigger("0 40 15 * * *")]TimerInfo myTimer, [Queue("topicque")] ICollector<string> outputQueueItem, TraceWriter log)
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(" https://weblink.com/api/v2/parent");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "GET";
httpWebRequest.Headers["Authorization"] =""
try
{
using (HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse())
{
Stream responseStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream);
str4 = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
}
foreach (Cat.cat cat in JsonConvert.DeserializeObject<List<Cat.cat>>(str4))
{
long id=cat.id
ICollector<string> collector = outputQueueItem;
string str5 = " https://weblink.com/api/v2/topics?patentID="+id
collector.Add(str5);
}
}
Код, который запускается из очереди и вызывает API
public static void Run([QueueTrigger("topicque")] string myQueueItem, [Queue("topicque")] ICollector<string> outputQueueItem2, TraceWriter log)
{
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(60));
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(myQueueItem);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "GET";
try
{
using (HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse())
{
Stream responseStream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream);
str3 = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
}
}
}
Есть ли какой-нибудь способ, которым мы могли бы достичь этого?
Спасибо