编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

如何将Python程序注册为Windows服务

wxchong 2024-08-13 12:32:45 开源技术 15 ℃ 0 评论

很多时候我们希望python程序能开机启动,除了将程序添加到开机启动项(startup文件夹)外,如果是不需要界面的程序,将程序添加到系统服务是一个更好的解决方法。

这篇文章介绍一种简单的将python程序注册为windows服务的方法。

写一个示例程序

首先我们写一个简单的myService.py

from cgitb import handler
import logging
from time import sleep
from loguru import logger

# 日志输出到文件,设置日志等级和格式
logger=logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler=logging.FileHandler('myService.log')
handler.setLevel(logging.INFO)
handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(message)s'))
logger.addHandler(handler)
                                                                                                                    
# 服务启动后打印日志
logger.info('myService is starting...')
 
while True:
    try:
        # 每隔3秒打印日志
        logger.info('myService is running...')
        sleep(3)
    except KeyboardInterrupt as e:
        # 用户主动退出时打印日志
        logger.info('myService is stopped by user')   
        break  

logger.info('myService is stopped')                                                                                   

运行程序后,可以看到myService.logw文件中日志输出如下

2022-04-23 21:17:33,494:INFO:myService is starting...
2022-04-23 21:17:33,495:INFO:myService is running...
2022-04-23 21:17:36,496:INFO:myService is running...
2022-04-23 21:17:39,496:INFO:myService is running...
2022-04-23 21:17:42,497:INFO:myService is running...
2022-04-23 21:17:44,985:INFO:myService is stopped by user
2022-04-23 21:17:44,986:INFO:myService is stopped

将程序打包为exe文件

使用pyinstaller将程序打包成exe文件:

pyinstaller -F myService.py



使用NSSM将myService.exe注册为系统服务

在nssm所在目录打开cmd命令行,执行nssm install myservice指令。

右键单击myservice服务启动即可运行服务了。运行几秒钟后,再右键停止服务,我们看一下日志输出正常。

2022-04-23 21:37:48,531:INFO:myService is starting...
2022-04-23 21:37:48,532:INFO:myService is running...
2022-04-23 21:37:51,533:INFO:myService is running...
2022-04-23 21:37:54,535:INFO:myService is running...
2022-04-23 21:37:57,535:INFO:myService is running...
2022-04-23 21:38:00,536:INFO:myService is running...
2022-04-23 21:38:03,537:INFO:myService is running...
2022-04-23 21:38:06,537:INFO:myService is running...
2022-04-23 21:38:09,538:INFO:myService is running...
2022-04-23 21:38:12,539:INFO:myService is running...
2022-04-23 21:38:13,896:INFO:myService is stopped by user
2022-04-23 21:38:13,896:INFO:myService is stopped

我们可以看到注册为服务后,就不会像直接双击运行exe文件那样出现黑色控制台了。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表