我需要运行 python 脚本并确保它将在终止后重新启动。我知道有一个名为 supervisord 的 UNIX 解决方案。但不幸的是,必须运行我的脚本的服务器在 Windows 上。你知道什么工具有用吗?谢谢
原文由 pss 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要运行 python 脚本并确保它将在终止后重新启动。我知道有一个名为 supervisord 的 UNIX 解决方案。但不幸的是,必须运行我的脚本的服务器在 Windows 上。你知道什么工具有用吗?谢谢
原文由 pss 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可能希望将脚本作为 Windows Service
运行。为此,您需要 python-win32 库。这个 问题 很好地描述了你如何去做这件事,以及一堆指向其他相关资源的链接。这个 问题 也可能有用。
A Windows Service
是您希望如何包装需要在 Windows 上连续运行的任何脚本。它们可以配置为在启动时自动启动,并处理故障。没有什么可以阻止任何人终止进程本身,但要处理这种潜在情况,您可以创建一个 bat
文件并使用 sc
命令轮询服务以查看是否它正在运行,如果没有重新启动服务。只需将 bat
文件安排为每 60 秒运行一次(或者您的脚本可能关闭的任何合理时间)。
原文由 Mark Gemmill 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答865 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
尽管 这里 有很大的免责声明,但您可以在 Windows 中使用 Cygwin 运行 Supervisor;事实证明,Cygwin 在模拟 Posix 环境方面走了很长一段路,效果非常好,以至于实际上 supervisord 的运行没有变化。无需学习新工具,如果需要跨平台部署复杂的项目,甚至可以节省不少工作量。
这是我的食谱:
以通常的方式配置 supervisord。请记住,supervisord 将与 Cygwin 一起运行,因此您最好以 Cygwin 方式使用路径(C:\myservers\project1 在 Cygwin 中转换为 /cygdrive/c/myservers/project1)。
现在您可能想将 supervisord 安装为服务。我是这样做的:
第 5 点将 supervisord 安装为 Windows 服务,这样你就可以从 Windows 服务管理器中控制它(启动/停止/重启)。但是你可以用
supervisorctl
做的事情照常工作,这意味着你可以简单地部署你的旧配置文件。