我有一个在CentOS Web主机上运行的ASP.NET Core 2.1 Web API,并且希望该API保持运行,以防万一该进程已被OS终止或由于内部致命异常而终止
我当前的设置
我有一个bash脚本,它经常检查与api匹配的运行进程。如果找不到,它将运行dotnet <myapi>.dll ...
并重新启动api。确实可以,但是有点混乱,因为我需要针对不同的api环境(测试,产品等)执行多个cron作业,并且在api死机与cron作业运行以重新启动它之间可能会有一些延迟。对于不同的环境,bash脚本中也存在偏差。
选项2
我最近偶然发现了IApplicationLifetime
(我知道有一个更新的版本,但是我使用的是.NET Core 2.1),它是ApplicationStopped
事件。我很想在应用程序停止时简单地注册一个委托并重新启动它?这样,我不会污染我的crontab,我可以立即做出反应,而不必等待cron作业开始。
选项2是否有任何缺点? .NET Core世界中的其他人如何处理这种情况,在这种情况下您想保持api的生命(直到您不这样做)?
谢谢!