Supervisord

进程管理工具(Supervisor) :

Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

这里有一篇也有用到 Supervisord,并且是一个部署 Flask 的 Web 应用的过程: https://mp.weixin.qq.com/s/hGfG7e2xQZeXTwijlbMmbA

Windows计划任务

上面的工具不支持Windows,大概因为Windows不需要? 计划任务可以自动重启挂掉的进程。 taskschd.dll 可以用 vbs/js 脚本或者 C#/C++等语言调用,自动生成任务。当然也可以图形化界面来手动设置。

将任务设置成开机启动,然后设置任务失败重新启动,应该就可以让程序在运行失败后重新启动了。 用这个应该是最方便的了。

NSSM

如果让程序作为 “windows 的服务”,监控这些基本功能 windows 是自带的。 所以只需要实现Windows服务注册。这可以写在代码里,找一下现成的库。 也可以使用现成工具来实现:

NSSM(the Non-Sucking Service Manager)是Windows环境下一款免安装的服务管理软件,它可以将应用封装成服务,使之像windows服务可以设置自动启动等。并且可以监控程序运行状态,程序异常中断后自动启动,实现守护进程的功能。不仅支持图形界面操作,也完全支持命令行设置