将python程序设置成windows服务

背景:

对于服务器上运行的python程式,我们期望服务器由于某些原因重启后,程式能够自动启动,最好的方法是将我们的程式改写成windows服务,这样可以保证每次服务器重启的时候,程式能够自动启动。

步骤:

自己经过研究和尝试,一般需要以下几个步骤:

1.开发python程式,并将保存的文件命名为test_services.py(测试文件名字可以根据自己需要去写)
2.使用pyinstaller将test_services.py打包成test_services.exe
3.管理员身份打开cmd,中输入 test_services.exe install,记录下安装的服务名
4.在windows任务管理器中将服务设置为自动启动
5使用 sc delete 服务名 删除服务

相关参考如下:https://www.cnblogs.com/zhenglisai/p/8073963.html

另一种方法:

也可以在Windows系统中将Python程序添加到自动启动项中,具体步骤如下:

1. 打开“运行”对话框:按住Windows键 + R

 

2. 输入shell:startup,然后点击“确定”按钮,会进入到一个新的路劲界面下。

 

3. 在弹出的文件夹中,新建一个快捷方式,将Python程序的路径链接到这个快捷方式上。

 选中上面的路径可以发现具体的路径如下,其实这个路径就是我们程序启动的快捷方式路径:

C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

4. 重启电脑,Python程序将会自动启动。
 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Windows 下,可以使用第三方库 `pywin32` 来将一个 Python 程序打包 Windows 服务。以下是实现步骤: 1. 安装 `pywin32` 库。可以使用 pip 命令进行安装: ``` pip install pywin32 ``` 2. 编写 Python 程序。可以参考以下示例代码: ```python import time def main(): while True: print('Service is running...') time.sleep(5) if __name__ == '__main__': main() ``` 在该示例代码中,我们定义了一个无限循环来模拟一个长时间运行的服务。 3. 使用 `win32serviceutil` 工具将 Python 程序打包服务。可以参考以下示例代码: ```python import win32serviceutil import win32service import win32event import servicemanager import socket import sys import time import os class MyService(win32serviceutil.ServiceFramework): _svc_name_ = 'MyService' _svc_display_name_ = 'My Service' _svc_description_ = 'This is my service.' def __init__(self, args): win32serviceutil.ServiceFramework.__init__(self, args) self.stop_event = win32event.CreateEvent(None, 0, 0, None) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.stop_event) def SvcDoRun(self): self.ReportServiceStatus(win32service.SERVICE_RUNNING) try: main() except Exception as e: servicemanager.LogErrorMsg(str(e)) self.ReportServiceStatus(win32service.SERVICE_STOPPED) def main(): while True: print('Service is running...') time.sleep(5) if __name__ == '__main__': if len(sys.argv) == 1: servicemanager.Initialize() servicemanager.PrepareToHostSingle(MyService) servicemanager.StartServiceCtrlDispatcher() else: win32serviceutil.HandleCommandLine(MyService) ``` 在该示例代码中,我们定义了一个继承自 `win32serviceutil.ServiceFramework` 的类 `MyService`,并实现了 `SvcDoRun` 和 `SvcStop` 方法来启动和停止服务。然后使用 `win32serviceutil.HandleCommandLine` 方法来处理命令行参数,从而实现将 Python 程序打包 Windows 服务的功能。 4. 在命令行中以管理员身份运行以下命令来安装服务: ``` python myservice.py install ``` 其中,`myservice.py` 是上一步中编写的 Python 程序文件名。安装功后,可以在 Windows服务列表中看到新安装的服务。 5. 在服务列表中启动、停止或重启服务。也可以使用以下命令来启动或停止服务: ``` net start MyService net stop MyService ``` 其中,`MyService` 是在第三步中定义的服务名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵追慕者

您的支持是我写作分享最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值