我需要运行python脚本,并确保它会在终止后重新启动。我知道有叫做supervisord的UNIX解决方案。但不幸的是,服务器上我的脚本必须在Windows上运行。你知道什么工具可以有用吗? 谢谢有没有Windows模拟supervisord?
回答
尽管胖胖的声明here,您可以在Windows中运行带有Cygwin的Supervisor;事实证明,Cygwin很长一段时间来模拟一个Posix环境,事实上supervisord实际上并没有改变。不需要学习新的工具,如果您需要在多个平台上部署复杂的项目,您甚至可以节省相当多的工作。
这里是我的食谱:
- 如果你还没有这么做过,安装Cygwin。在安装过程中,选择Python。
- 从Cygwin终端,照常安装virtualenv。
创建supervisord一个的virtualenv,然后照常安装:按照通常的方式
pip install supervisord
配置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"
转至Windows服务管理器并启动服务supervisord刚刚安装。
第5点安装supervisord作为Windows服务,以便您可以从Windows服务管理器控制它(启动/停止/重新启动)。但是,您可以使用supervisorctl
的功能照常工作,这意味着您可以简单地部署旧的配置文件。
您可能想运行您的脚本作为Windows Service
。为此,您需要使用python-win32库。这question有很好的描述你如何去做这件事,以及到其他相关资源的一堆链接。这个question也可能有用。
A Windows Service
是你想如何包装任何需要在Windows上连续运行的脚本。它们可以配置为在启动时自动启动,并处理故障。没有什么会阻止任何人杀死流程本身,但为了处理这种潜在的情况,您可以创建一个bat
文件并使用sc
命令来指示该服务是否正在运行以及是否重新启动该服务。只需安排bat
文件每60秒运行一次(或任何合理的脚本可能会停止运行)。
作为Windows服务运行python脚本将使它只能在后台运行。那还不够。我的目标是使脚本运行牢不可破。即使有人杀死脚本,脚本也必须重新启动。 – pss
在这种情况下,使用bat文件,sc命令和系统调度程序来处理'已杀死'进程。看我的编辑。 –
如果你想,在大多数POSIX的操作系统上运行,并且,基于Python一样supervisord一个supervisord般的进程管理器,那么你应该看看町是工头的一个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服务可能是您最好的短期选择。
本町的最新的TRUNK现在有Windows支持:)使用和享受 –
嗨,律'关于本町的问题:是否真的应该重新启动失败的任务,像主管?当我“杀死”一个时,它不会。所以我们必须使用主管和本科的组合吗?谢谢。 – Ehvince
其实honcho比主管更像工头。另请参阅https://blog.codeship.com/using-honcho-create-multi-process-docker-container/ –
- 1. 是否有一个java模拟supervisord
- 2. 有没有办法模拟windows phone 7模拟器上的墓碑?
- 3. 有没有办法模拟Windows 8中的触摸事件?
- 4. 有没有办法重新启动Windows Phone 7模拟器?
- 5. Windows有没有好的(功能性)神经网络模拟器?
- 6. Virtualenv没有被从supervisord AWS Elasticbeanstalk激活
- 7. b2body没有模拟物理
- 8. 有没有一种工具来模拟/模拟软件并发?
- 9. “模拟”对象有没有属性“__getitem__”
- 10. 有没有办法模拟QGroupVBoxLayout?
- 11. WPF InkCanvas有没有Android模拟器?
- 12. 是否有Windows的seccomp模拟器
- 13. 没有互联网上的Windows Phone 8模拟器
- 14. 没有管理员权限的Windows Azure模拟器
- 15. 有没有办法让visual studio 2008的windows phone 7手机模拟器?
- 16. 有没有办法在Windows 10上同时运行Android模拟器和VmWare Player?
- 17. 有没有办法让psexec进入我自己的虚拟机(windows xp模式)?
- 18. 有没有iPhone模拟器的Windows(或Linux)来安装iPhone应用程序?
- 19. Android模拟器没有出现在模拟器
- 20. UIStepper没有显示,但没有在4.3模拟器中崩溃
- 21. 有没有在Django模型中模拟虚拟继承的理智方法?
- 22. mininet模拟没有控制器和
- 23. android模拟器没有皮肤
- 24. iphone模拟器资源没有更新
- 25. Android模拟器没有启动
- 26. xcode 6.x模拟器没有显示
- 27. 窗口没有显示在模拟
- 28. 模拟器上没有帐户
- 29. 您没有权限运行模拟器
- 30. HTML文件没有在模拟器
短暂通知:现在是“pip install supervisor”,它需要python 2.4+,但它不会与任何3+版本一起工作。 – Peon