是否有类似于 supervisord 的 Windows?

新手上路,请多包涵

我需要运行 python 脚本并确保它将在终止后重新启动。我知道有一个名为 supervisord 的 UNIX 解决方案。但不幸的是,必须运行我的脚本的服务器在 Windows 上。你知道什么工具有用吗?谢谢

原文由 pss 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

尽管 这里 有很大的免责声明,但您可以在 Windows 中使用 Cygwin 运行 Supervisor;事实证明,Cygwin 在模拟 Posix 环境方面走了很长一段路,效果非常好,以至于实际上 supervisord 的运行没有变化。无需学习新工具,如果需要跨平台部署复杂的项目,甚至可以节省不少工作量。

这是我的食谱:

  1. 如果您还没有这样做,请安装 Cygwin。安装过程中,选择Python。
  2. 从 Cygwin 终端,照常安装 virtualenv
  3. 为 supervisord 创建一个 virtualenv,然后照常安装:
    pip install supervisord

  1. 以通常的方式配置 supervisord。请记住,supervisord 将与 Cygwin 一起运行,因此您最好以 Cygwin 方式使用路径(C:\myservers\project1 在 Cygwin 中转换为 /cygdrive/c/myservers/project1)。

  2. 现在您可能想将 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"

  1. 转到 Windows 服务管理器并启动您刚刚安装的服务 supervisord。

第 5 点将 supervisord 安装为 Windows 服务,这样你就可以从 Windows 服务管理器中控制它(启动/停止/重启)。但是你可以用 supervisorctl 做的事情照常工作,这意味着你可以简单地部署你的旧配置文件。

原文由 dsign 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可能希望将脚本作为 Windows Service 运行。为此,您需要 python-win32 库。这个 问题 很好地描述了你如何去做这件事,以及一堆指向其他相关资源的链接。这个 问题 也可能有用。

A Windows Service 是您希望如何包装需要在 Windows 上连续运行的任何脚本。它们可以配置为在启动时自动启动,并处理故障。没有什么可以阻止任何人终止进程本身,但要处理这种潜在情况,您可以创建一个 bat 文件并使用 sc 命令轮询服务以查看是否它正在运行,如果没有重新启动服务。只需将 bat 文件安排为每 60 秒运行一次(或者您的脚本可能关闭的任何合理时间)。

原文由 Mark Gemmill 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题