我有以下异步代码,它在我的项目中被多处调用:
上述方法被调用的示例:
我正在访问的ZenDesk API允许每分钟约200个请求,超过后我会收到429错误。如果遇到429错误,我需要进行一些Thread.sleep操作,但是由于使用了async/await,可能有很多并行线程在等待处理,我不知道如何使它们都暂停5秒左右,然后再继续执行。
面对这个问题,正确的解决方法是什么?我希望听到快速解决方案和良好设计的解决方案。
public async Task<HttpResponseMessage> MakeRequestAsync(HttpRequestMessage request)
{
var client = new HttpClient();
return await client.SendAsync(request).ConfigureAwait(false);
}
上述方法被调用的示例:
var tasks = items.Select(async i =>
{
var response = await MakeRequestAsync(i.Url);
//do something with response
});
我正在访问的ZenDesk API允许每分钟约200个请求,超过后我会收到429错误。如果遇到429错误,我需要进行一些Thread.sleep操作,但是由于使用了async/await,可能有很多并行线程在等待处理,我不知道如何使它们都暂停5秒左右,然后再继续执行。
面对这个问题,正确的解决方法是什么?我希望听到快速解决方案和良好设计的解决方案。
Task.Delay
。 - Alexei Levenkov