怎么用Python制作一个Windows服务开机自启,又怎么用Python安装一个Windows服务?
作者:卡卷网发布时间:2025-04-07 22:44浏览数量:37次评论数量:0次
引言
今天老板突然把我叫进办公室,搞得我非常紧张。推门进去一看,老板脸阴沉沉的。
“你的python程序为什么没有启动?”老板指着电脑屏幕,语气不太友善。
我过去一看,原来程序根本没有运行起来:“你程序没打开!”
老板一听就不乐意了:“程序还需要打开吗?不应该开机就启动了吗?”
嘘,原来如此!Linux 下有 systemctl 运行程序服务,但老板使用的 windows 电脑并没有做开机启动,所以当他重新启动电脑以后根本没有运行程序。
我赶紧回到工位,通过 python 来将服务进行开机启动。
windows服务
我们可以通过 windows 的服务来运行我们的程序,你可以在 任务管理器 的服务中找到很多服务,现在我们做的就是创建服务,并添加到系统中。
安装库
pip install pywin32
测试代码
我们将添加一个 python服务 到系统中,该服务将在桌面上创建一个 test.txt 的文件,每5秒钟 将在其中添加一行内容来确认服务的运行。
import os
import time
import win32serviceutil
import win32service
import servicemanager
import threading
class MyService(win32serviceutil.ServiceFramework):
_svc_name_ = 'python服务'
_svc_display_name_ = '测试python服务'
_svc_description_ = '这是个测试用的python服务'
def __init__(self, *args, **kwargs):
win32serviceutil.ServiceFramework.__init__(self, *args, **kwargs)
self.event = threading.Event()
self.txt_path = r'C:\Users\xxxx\Desktop\test.txt'
if not os.path.exists(self.txt_path):
with open(self.txt_path, 'w') as f:
f.write('')
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
self.event.set()
def SvcDoRun(self):
self.ReportServiceStatus(win32service.SERVICE_START_PENDING)
servicemanager.LogInfoMsg("Service starting...")
self.ReportServiceStatus(win32service.SERVICE_RUNNING)
self.main()
def main(self):
while not self.event.is_set():
with open(self.txt_path, 'a') as f:
now_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
f.write(f'{now_str} Service is running...\n')
time.sleep(5)
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(MyService)
安装服务
请使用 以管理员身份运行 打开控制台,并运行命令:
python main.py install
注意:请勿使用 虚拟环境 来安装或启动服务,这将导致报错:Error starting service: 服务没有及时响应启动或控制请求。
查看服务
打开运行,输入 services.msc:
可以看到我们的服务已经成功安装,是时候运行启动它了!
启动服务
python main.py start
文件创建成功
停止服务
python main.py stop
删除服务
python main.py remove
开机启动
python main.py --startup auto install
如果使用 windows服务 进行启动,请注意:如果你的程序带有可视化界面,可能会出现无法展示的情况。
结尾
很好,我们的服务已经可以开机启动并且能够自动重启了,我能看到老板脸上的笑容正在绽放,我悬着心的也落了下来。
如果你有需要开机启动的服务,不妨去试试!
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
- 上一篇:农民工中午吃饭为什么都喜欢喝一瓶啤酒呢?
- 下一篇:请问你们经历过网络杀猪盘吗?
相关推荐

你 发表评论:
欢迎