首页 / 知识
如何在Windows中将Python脚本作为服务运行?
2023-04-13 12:00:00

How do you run a Python script as a service in Windows?我正在为一组共享存储在数据库中的各种相关对象的程序绘制体系结构。我希望其中一个程序充当服务,为这些对象上的操作提供更高级别的接口,而其他程序通过该服务访问对象。 我目前的目标是将python和django框架作为实现该服务的技术。我很确定我知道如何在Linux中监控python程序。但是,它是系统应该支持Windows的可选规范项。我在Windows编程方面经验不足,在Windows服务方面完全没有经验。 是否可以将python程序作为Windows服务运行(即不需要用户登录就自动运行)?我不一定要实现这一部分,但我需要一个大致的概念,如何才能决定是否要沿着这些路线进行设计。 编辑:感谢所有的答案,目前为止,他们是相当全面的。我还想知道一件事:Windows如何知道我的服务?我可以用本机的Windows实用程序管理它吗?在/etc/init.d中放置启动/停止脚本的等效方法是什么? 是的,你可以。我使用ActivePython附带的pythoncom库,或者可以与pywin32(用于Windows扩展的python)一起安装。 这是简单服务的基本框架:
您的代码将使用 虽然几周前我对选择的答案投了反对票,但与此同时,我在这个话题上挣扎得更厉害。感觉像是有一个特殊的python安装,使用特殊的模块将脚本作为服务运行,这是完全错误的方法。可移植性之类的呢? 我偶然发现了一个非常棒的非吸吮服务管理器,它使处理Windows服务变得非常简单和明智。我想,既然我可以将选项传递给已安装的服务,我也可以选择我的python可执行文件并将脚本作为选项传递。 我还没有尝试过这个解决方案,但是我现在就这样做,并在这个过程中更新这个帖子。我对在Windows上使用virtualenv也很感兴趣,所以我可能迟早会想出一个教程,并链接到这里。 实现这一点的最简单方法是使用本机命令sc.exe:
号 参考文献: 实际上,有两种方法可以作为服务安装任何Windows可执行文件。 方法1:使用RKTools.exe中的instsrv和srvany对于Windows Home Server或Windows Server 2003(也可与WinXP一起使用),Windows Server 2003资源工具包工具附带可用于此目的的实用程序,称为instsrv.exe和srvany.exe。有关如何使用这些实用程序的详细信息,请参阅此Microsoft知识库文章KB137890。 对于Windows Home Server,这些实用程序有一个很好的用户友好包装器,名为"任何服务安装程序"。 方法2:对Windows NT使用ServiceInstaller另一种选择是使用ServiceInstaller for Windows NT(可在此处下载),并提供python指令。与名称相反,它也适用于Windows 2000和Windows XP。下面是一些关于如何将Python脚本安装为服务的说明。
号 在我最初的回答之后,我注意到已经发布了一些与此密切相关的问题。另请参见: 我可以(在Windows中)运行python脚本作为服务吗?怎么用? 如何让Windows知道我用python编写的服务? 最简单的方法是使用:nssm-非吸盘服务管理器: 1-在https://nssm.cc/download上进行下载 2-将python程序作为服务安装:win prompt作为admin C:>nssm.exe安装WinService 3-在NSSM控制台上: 路径:C:python27python27.exe 启动目录:C:python27 参数:c:winservice.py 4-检查services.msc上创建的服务 逐步说明如何使其工作: 1-首先根据上面提到的基本框架创建一个python文件。并将其保存到路径,例如:"c:pythonfilesappserversvc.py"
。 2-在这个步骤中,我们应该注册我们的服务。 以管理员身份运行命令提示并键入:
号 binpath的第一个参数是python.exe的路径 binpath的第二个参数是我们已经创建的python文件的路径。 不要错过,你应该在每个"="符号后放一个空格。 如果一切正常,你应该看看
号 现在您的python服务安装为windows服务。您可以在服务管理器和注册表中的以下位置看到它: HKEY U本地机器系统当前控制集服务测试服务 3-现在好。您可以在服务管理器上启动服务。 您可以执行提供此服务框架的每个python文件。 我开始用pywin32作为服务进行托管。 一切都很好,但我遇到了一个问题,即系统启动时服务无法在30秒内启动(Windows的默认超时)。这对我来说很关键,因为Windows启动同时发生在一台物理机上托管的几个虚拟机上,IO负载很大。错误消息为: 江户十一〔一〕号 我和Pywin打了很多仗,但最终还是使用了NSSM,正如在这个答案中提出的那样。迁移到那里很容易。 在python 3中打开nssm+ (我用pyinstaller将.py文件转换为.exe) NSSM:如前所述
对于任何想在Venv或Pycharm中创建服务的人!!!!!!!!!! 在阅读了所有的anwser并创建了一些脚本之后,如果可以运行 可能是因为venv问题,因为Windows服务是由exec 您可以使用
如果你遇到像我这样的错误,你可以在另一个问题中检查我的答案,我修正了它并把我的代码贴在这里。 使用 从提升的(管理)命令提示符运行
顺便说一句,如果您的程序打印出您想要保存在日志文件中的有用消息,那么NSSM还可以为您处理这一点以及更多信息。 pysc:python上的服务控制管理器 从pythonhosted.org获取的要作为服务运行的示例脚本:
号
|
最新内容
相关内容
python脚本中有乱码怎么解决
python脚本中有乱码怎么解决,代码,培训,脚本,乱码,中文,下面,英语系,源文件,语句,源码,有时候,在Python脚本里有中文的时候,会报下面的错误:Non-Python脚本如何使用
Python脚本如何使用,培训,脚本,文件,文件名称,路径,命令,下面,窗口,以上,更多,python脚本的使用方法如下:1、首先编写脚本文件,命名成一个.py文Python如何创建对象,有哪些方法
Python如何创建对象,有哪些方法,培训,对象,方法,内容,函数,属性,所在,以上,以下,功能,以下介绍Python创建对象的9种方法。classPoint:def__iniPython怎么运行shell脚本
Python怎么运行shell脚本,培训,命令,文件,方法,脚本,文件夹,对象,建议,结果,内容,Python作为一门脚本语言,有时候需要与shell命令交互式使用,在python脚本怎么自动生成文件
python脚本怎么自动生成文件,工作,名字,通用,培训,文件,脚本,内容,参数,关系,中将,python脚本自动生成需要文件在工作中我们经常需要通过一个python类对象和实例对象是一样的吗
python类对象和实例对象是一样的吗,地址,概念,下来,数据,培训,实例,对象,方法,属性,变量,python面向对象最重要的概念就是类(Class)和实例(Inpython代码运行需要编译吗
python代码运行需要编译吗,代码,培训,做好,体系,平台,语言,机器码,目标,厨师,下次,有人在讨论Python代码是编译执行还是解释执行?这个问题还如何获取当前运行python文件路径
如何获取当前运行python文件路径,名字,培训,路径,脚本,绝对路径,文件,指令,模块,定义,所在,获取当前执行主脚本方法:sys.argv[0]和_file_(1)sypython对象与方法的区别是什么
python对象与方法的区别是什么,地址,数据,培训,对象,函数,类型,字符串,方法,表示,身份,python使用对象模型来存储数据,也就是说构造任何类型的pythonmac如何启动python脚本
pythonmac如何启动python脚本,培训,脚本,文件,终端,权限,以上,目录,更多,内容,mac下执行python脚本主要分为以下四步:首先,在python文件里首行python怎么在cmd运行文件夹
python怎么在cmd运行文件夹,培训,路径,文件夹,文件,以上,程序,方法,更多,内容,python是一门高级测面向对象的程序设计语言。运行Python,可在python cmd中怎么运行python文件
python cmd中怎么运行python文件,培训,文件,路径,以上,程序,方法,更多,内容,运行Python,可在交互模式下运行,或者命令行中。命令行中运行的是