我有一个 python 服务器,我需要在 Linux 和 Windows 环境中运行,我的问题是关于部署的。部署解决方案而不是双击文件并运行它的最佳方法是什么?
因为我在服务器上使用了 server_forever(),所以我只能从命令行运行脚本,但这会使 python 窗口保持打开状态。如果我注销机器,这个过程自然会停止。那么部署需要在用户登录或退出机器时保持运行的 python 脚本的最佳方法是什么。
由于我将使用多种环境,Linux 和 Windows,您能否具体说明您所谈论的操作系统?
对于 Windows,我正在考虑使用 Windows 调度程序运行脚本“启动时”。但我想看看是否有人有更好的选择。对于linux,我真的不知道要创建什么。我要承担 CRON 工作?
部署确实涉及编码,因此在多处理作业管理器上使用 serve_forever() 可在执行时保持 python 窗口打开。有没有办法通过代码隐藏这个窗口?您会推荐使用像 py2exe 这样的转换工具吗?
最佳答案
这是整个图书馆的主题,所以我在这里只做一个介绍:-) 您基本上可以直接启动脚本,然后有多个选项以它们在后台持续运行的方式执行此操作。
如果您有某些功能需要定期运行,您可以通过安排它来实现:
- Windows:Windows 调度程序或特定的调度工具
- Linux:Cron
如果你的问题是你想在 SSH 进入 Linux 时启动一个脚本而不关闭它,你想查看“screen”或“tmux”工具。
如果你想让它自动启动,这可以通过使用你指出的“启动时”来完成,Linux 具有类似的功能,但首选和更可靠的方法是设置一个更好地集成的服务与操作系统。
- Windows:Windows Service
- Linux:Daemon
使用 Django 等应用服务器可以产生更多的功能
Tomcat(见评论)是一个选项,但绝对不是标准选项;您将很难从运行 Python 的 Tomcat 人员或在 Tomcat 上运行他们的东西的 Python 人员那里找到支持。话虽这么说,我想您可以启用 CGI 并让它使用您的脚本运行 Python 命令。
然而,我强烈建议您查看可能适用于您的特定用例的不同 Python 选项,而不是仅仅启动 Python 脚本。来自 Flask 等轻量级 Web 解决方案通过像 Twisted 这样的多功能网络引擎到像 Django 这样的成熟网络框架.
他们都有经过深思熟虑的可用部署解决方案。查找WSGI了解更多背景。
关于python - 将 Python 脚本部署到 Windows 和 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17677744/