프로그래밍언어/C#
[C#] 동시성 프로그래밍_ 지수 백오프(exponential backoff)
배세
2023. 7. 3. 19:49
- 재시도 사이의 대기 시간을 점진적으로 늘리는 전략
- 웹 서비스 관련 작업에 사용하면 서버가 재시도로 넘치지 않게 막을 수 있다.
public static async Task<string> GetRequestHttpWithRetries() {
//1초 후, 다음에는 2초 후, 다음에는 4초 후 재시도
TimeSpan nextDelay = TimeSpan.FromSeconds(1);
HttpClient client = new HttpClient();
string url = "http://www.naver.com";
for (int i = 0; i != 3; i++) {
try {
var result = await client.GetStringAsync(url);
Console.WriteLine(string.Format("time: {0}, result: {1}", nextDelay, result));
return result;
}
catch {
}
await Task.Delay(nextDelay);
nextDelay = nextDelay + nextDelay;
}
return await client.GetStringAsync(url);
}