У меня есть приложение, которое отправляет 500 HTTP-запросов асинхронно. Все запросы, обработанные после 15 секунд, завершаются неудачно из-за тайм-аута на HTTP-клиенте, даже , когда запрошенная конечная точка уже вернула 200 OK.
Код очень прост. Здесь мы берем кусок запросов (500) и выполняем их асинхронно. Следует отметить, что нижеприведенная функция - это функция Azure, выполняемая в плане потребления.
public async Task RunBatch(List<Request> requests)
{
if (requests != null && requests .Count > 0)
{
var tasks = new Task[requests.Count];
var i = 0;
foreach (var request in requests)
{
var request = new HttpRequestMessage(HttpMethod.Post, new Uri(request.Url));
request.Content = new StringContent(request.BodyString, Encoding.UTF8, "application/json");
tasks[i] = _httpClient.SendAsync(request);
i++;
}
await Task.WhenAll(tasks);
}
}
В моем конструкторе существует следующий код
_httpClient = new HttpClient();
_httpClient.Timeout = new TimeSpan(0, 0, 15); // 15 seconds
Вот журналы от Azure.
Я бы хотел, чтобы время ожидания каждого запроса составляло 15 секунд. Однако мне нужно, чтобы он давал точный код ответа всякий раз, когда мой сервер приступает к обработке ожидаемого запроса. Возможно ли это?
Следует отметить: при более высоком тайм-ауте Http (1 мин) все запросы выполняются успешно.