我正在为一组程序绘制架构草图,这些程序共享存储在数据库中的各种相互关联的对象。我希望其中一个程序充当服务,为这些对象的操作提供更高级别的接口,而其他程序则通过该服务访问对象。
我目前的目标是将 Python 和 Django 框架作为实现该服务的技术。我很确定我想出了如何在 Linux 中守护 Python 程序。但是,系统应该支持 Windows 是一个可选的规范项目。我对 Windows 编程没有什么经验,对 Windows 服务也没有任何经验。
是否可以将 Python 程序作为 Windows 服务运行(即无需用户登录即可自动运行)? 我不一定要实现这部分,但我需要大致了解如何完成,以便决定是否按照这些思路进行设计。
编辑:感谢到目前为止的所有答案,它们非常全面。我还想知道一件事: Windows 如何知道我的服务?我可以使用本机 Windows 实用程序管理它吗? 将启动/停止脚本放入 /etc/init.d 有什么等价物?
原文由 Hanno Fietz 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的你可以。我使用 ActivePython 附带的 pythoncom 库来执行此操作,或者可以使用 pywin32 (Windows 扩展的 Python)安装。
这是一个简单服务的基本框架:
您的代码将进入
main()
方法——通常带有某种无限循环,可能会通过检查标志来中断,该标志是您在SvcStop
方法中设置的