pss*_*pss 25 python windows supervisord
我需要运行python脚本并确保它在终止后重新启动.我知道有一个名为supervisord的UNIX解决方案.但不幸的是,我的脚本必须运行的服务器是在Windows上.你知道什么工具有用吗?谢谢
dsi*_*ign 39
尽管这里有大量的免责声明,你可以在Windows中运行Cygwin的 Supervisor ; 事实证明,Cygwin在模拟Posix环境方面走得很远,实际上supervisord运行不变.没有必要学习新工具,如果需要跨多个平台部署复杂项目,甚至可以节省大量工作.
这是我的食谱:
为supervisord创建virtualenv,然后像往常一样安装:
pip install supervisord
Run Code Online (Sandbox Code Playgroud)以通常的方式配置supervisord.请记住,supervisord将与Cygwin一起运行,因此您最好使用Cygwin方式的路径(C:\ myservers\project1转换为Cygwin中的/ cygdrive/c/myservers/project1).
现在您可能希望将supervisord安装为服务.我是这样做的:
cygrunsrv --install supervisord --path /home/Administrator/supervisor/venv/bin/python --args "/home/Administrator/supervisor/venv/bin/supervisord -n -c /home/Administrator/supervisor/supervisord.conf"
Run Code Online (Sandbox Code Playgroud)转到Windows服务管理器并启动刚刚安装的服务管理程序.
Point 5将supervisord安装为Windows服务,以便您可以从Windows服务管理器控制它(启动/停止/重新启动).但是你可以supervisorctl像往常一样工作,这意味着你可以简单地部署你的旧配置文件.
您可能希望将脚本作为一个脚本运行Windows Service.为此,您需要python-win32库.这个问题很好地描述了你如何做到这一点,以及一堆链接到其他相关资源.这个问题也可能有用.
A Windows Service是您希望如何包装需要在Windows上连续运行的任何脚本.它们可以配置为在引导时自动启动,并处理故障.没有什么能阻止任何人杀死进程本身,但是为了处理这种潜在的情况,你可以创建一个bat文件并使用sc命令来限制服务以查看它是否正在运行,如果没有重启服务.只需安排bat文件每60秒运行一次(或者任何合理的脚本可能会被关闭).
如果你想要一个类似于supervisord的流程管理器,它运行在大多数posix操作系统上并且是基于Python的,就像supervisord一样,那么你应该看看这是一个Python工头的Python端口(基于Ruby):
http://pypi.python.org/pypi/honcho/
它在mac,linux上工作得很好但是(实际上)还没有windows ...(编辑我最初的答案,我乐观地说它已经在Windows上工作,基于拉取请求已被丢弃)
有一个分支在这里提供Windows支持https://github.com/redpie/honcho 和一些正在进行中支持Windows的工作https://github.com/nickstenning/honcho/issues/28 ...至少它可能在不久的将来成为一种可能的解决方案.
这里还有一个支持Windows的工头分支:https://github.com/ddollar/foreman-windows可能对你有用,虽然我从未尝试过.
所以目前,Windows服务可能是您最好的短期选择.