Ядро ASP.NET - Как я могу определить, происходит ли сбой моего IHostedService во время выполнения?Могу ли я перезапустить его? - PullRequest
0 голосов
/ 26 мая 2019

Я внедряю синхронизированную фоновую службу на своем веб-сайте ASP.NET Core, используя код, найденный по адресу в этом блоге , в качестве модели.Бит, который выполняет настоящую работу, выглядит следующим образом ...

protected async Task ExecuteAsync(CancellationToken stoppingToken)
{
    while (!stoppingToken.IsCancellationRequested)
    {
        // Put your code here

        // Wait 30 minutes before running again.
        await Task.Delay(TimeSpan.FromMinutes(30), stoppingToken);
    }
}

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

Насколько я вижу, среда создает и запускает задачу,а остальная часть приложения ничего об этом не знает.Могу ли я определить, происходит ли сбой службы IHostedService, и могу ли я ее перезапустить?Если нет, что мне делать?Выполнение этого через регулярные промежутки времени имеет решающее значение для веб-сайта, поэтому мне нужно знать, что я могу справиться с любыми проблемами.

1 Ответ

0 голосов
/ 28 мая 2019

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

Вы должны запускать критические фоновые службы в отдельном, независимом процессе .Это может быть функция Azure, Docker или даже служба Win32 с включенным автоматическим перезапуском.Таким образом, что-то еще перезапускает ваш процесс по мере необходимости.

...