IHostedService.StopAsync ожидает потоков запросов? - PullRequest
0 голосов
/ 22 октября 2018

При остановке сервера ASP.NET Core с экземплярами IHostedService s, могут ли вызовы к StopAsync войти, пока поток запроса все еще обрабатывается?Или вызовы StopAsync будут автоматически ожидать завершения всех активных потоков запросов?И будут ли новые запросы остановлены после выполнения StopAsync?

Я не уверен, что это относится к IHostedService.Может быть, вопрос в том, будет ли погода ASP.NET Core вообще дождаться завершения запросов, прежде чем продолжить с отключением, если отключение инициируется во время обработки запросов?И если это, в свою очередь, также вызывает StopAsync на экземплярах IHostedService, которые будут перенесены до выполнения запросов.

И если ASP.NET Core в целом остановит новые запросы после начала выключения?

1 Ответ

0 голосов
/ 22 октября 2018

Хостинговые сервисы запускаются вне запросов, поэтому им действительно не нужно заботиться о том, выполняются ли запросы.

При этом хостинговые сервисы запускаются после веб-приложения.был построен и запущен, но остановлен после веб-приложение было закрыто.Это релевантная часть источника для этого:

// Fire IApplicationLifetime.Stopping
_applicationLifetime?.StopApplication();

if (Server != null)
{
    await Server.StopAsync(cancellationToken).ConfigureAwait(false);
}

// Fire the IHostedService.Stop
if (_hostedServiceExecutor != null)
{
    await _hostedServiceExecutor.StopAsync(cancellationToken).ConfigureAwait(false);
}

Поскольку сервер Kestrel обычно пытается корректно завершить свои соединения, вы можете ожидать, что все запросы будут прекращенывремя работы StopAsync вашего IHostedService.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...