Перезапуск основного приложения asp. net при завершении работы - PullRequest
0 голосов
/ 09 июля 2020

У меня есть веб-api ASP. NET Core 2.1, работающий на веб-хосте CentOS, и я бы хотел, чтобы этот api оставался активным в том маловероятном случае, если процесс был прерван ОС или из-за внутреннее фатальное исключение.

Моя текущая настройка

У меня есть сценарий bash, который время от времени проверяет наличие запущенного процесса, соответствующего API. Если он не найден, он запускает dotnet <myapi>.dll ... и перезапускает api. Это работает, но это немного беспорядочно, так как мне нужно иметь несколько заданий cron для разных сред api (test, prod, et c), и может быть некоторая задержка между тем, когда api умирает, и когда запускается задание cron чтобы перезапустить его. У меня также есть отклонения в сценарии bash для разных сред.

Вариант 2

Недавно я наткнулся на IApplicationLifetime (я знаю, что есть более новая версия это, но я нахожусь на. NET Core 2.1) и это событие ApplicationStopped. У меня возникает соблазн просто зарегистрировать делегата, когда приложение остановится, и просто перезапустить его? Таким образом, я не загрязняю свой crontab и могу немедленно отреагировать, вместо того, чтобы ждать, пока сработает задание cron.

Есть ли недостатки у варианта 2? Как все остальные в мире. NET Core справятся с этим случаем, когда вы хотите сохранить api в рабочем состоянии (пока вы этого не сделаете)?

Спасибо!

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