一、新建启动服务程序

# ZPF
# encoding=utf-8
import win32timezone
from logging.handlers import TimedRotatingFileHandler
import win32serviceutil
import win32service
import win32event
import os
import logging
import inspect
import time
import shutilclass PythonService(win32serviceutil.ServiceFramework):_svc_name_ = "PythonService"                    #服务名_svc_display_name_ = "Clearjob"                 #job在windows services上显示的名字_svc_description_ = "Clear system files"        #job的描述def __init__(self, args):win32serviceutil.ServiceFramework.__init__(self, args)self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)self.logger = self._getLogger()#启动文件的地址#cmd命令self.path = os.popen("python manage.py runserver IP:端口")self.path = 'D:\\WebSite'self.T = time.time()self.run = Truedef _getLogger(self):'''日志记录'''logger = logging.getLogger('[PythonService]')this_file = inspect.getfile(inspect.currentframe())dirpath = os.path.abspath(os.path.dirname(this_file))if os.path.isdir('%s\\log'%dirpath):  #创建log文件夹passelse:os.mkdir('%s\\log'%dirpath)dir = '%s\\log' % dirpathhandler = TimedRotatingFileHandler(os.path.join(dir, "Clearjob.log"),when="midnight",interval=1,backupCount=20)formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')handler.setFormatter(formatter)logger.addHandler(handler)logger.setLevel(logging.INFO)return loggerdef SvcDoRun(self):self.logger.info("service is run....")try:while self.run:self.logger.info('---Begin---')for path, name, file in os.walk('D:\\Website'):if path == 'D:\\Website':for IISname in name:floder = []for i in os.listdir(os.path.join(path, IISname)):if i.isdigit():floder.append(int(i))if len(floder) == 0:passelif len(floder) >= 2:  # 设置保留备份
                                floder.sort()for x in floder[:(len(floder) - 2)]: self.logger.info("delete dir: %s" % os.path.join(os.path.join(path, IISname), str(x)))shutil.rmtree(os.path.join(os.path.join(path, IISname), str(x)))self.logger.info('---End---')time.sleep(10)except Exception as e:self.logger.info(e)time.sleep(60)def SvcStop(self):self.logger.info("service is stop....")self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)win32event.SetEvent(self.hWaitStop)self.run = Falseif __name__ == '__main__':win32serviceutil.HandleCommandLine(PythonService)

二、将服务安装到windows

#安装服务
python Clearjob.py install#开启服务
python Clearjob.py start#停止服务
python Clearjob.py stop#移除服务
python Clearjob.py remove

三、异常解决方法

1.开启服务的时候会出现报错“The service did not respond to the start or control request in a timely fashion”,意思是“服务没有及时响应启动或控制请求”。

2.解决方案:将Python36\Lib\site-packages\win32路径下的pythonservice.exe注册一下。

注册命令:pythonservice.exe /register

3.这很尴尬。。。缺少pywintypes36.dll。找下,在Python36\Lib\site-packages\pywin32_system32路径。

解决方法:设置到环境变量或者将此dll copy到Python36\Lib\site-packages\win32。

注册完后执行python Clearjob.py start

服务运行成功!

转载于:https://www.cnblogs.com/cxys85/p/10232900.html

Python——Window启动服务相关推荐

  1. python webpy启动服务

    --查看端口 lsof -i:21111 nohup python /root/ardo/mylog.py 21111 & --完美解决python web重定向后nohup input/ou ...

  2. python开发服务程序_Python 编写Windows服务程序:将Python作为Windows服务启动 | 学步园...

    Python程序作为Windows服务启动,需要安装pywin32包.下载路径: #-*- coding:utf-8 -*- import win32serviceutil import win32s ...

  3. 编写Windows服务程序,将Python作为Windows服务启动

    首先需要安装两个模块. pip install pywin32 -i https://pypi.tuna.tsinghua.edu.cn/simplepip install pyinstaller - ...

  4. linux启动设置运行级别,Linux的运行级别和设置开机启动服务的方式

    Linux的运行级别 什么是运行级别呢?简单点来说,运行级别就是操作系统当前正在运行的功能级别.级别是从0到6,具有不同的功能.这些级别定义在/ect/inittab文件中.这个文件是init程序寻找 ...

  5. python实现WebsocketServer 服务端

    python 实现weisocket服务端用到的库为:websocket-server 0.4  : https://pypi.org/project/websocket-server/0.4/ ht ...

  6. python与rpc服务

    什么是rpc 随着企业 IT 服务的不断发展,单台服务器逐渐无法承受用户日益增长的请求压力时,就需要多台服务器联合起来构成「服务集群」共同对外提供服务. 同时业务服务会随着产品需求的增多越来越肿,架构 ...

  7. python云盘服务_Python无所不能?五分钟教会你用python打造个人云盘!

    1 简介 当我们想要从本地向云服务器上传文件时,比较常用的有pscp等工具,但避免不了每次上传都要写若干重复的代码. 而笔者最近发现的一个基于Python的工具updog,可以帮助我们在服务器上搭建类 ...

  8. centos部署python flask_python 微服务框架之nameko实践

    大纲: 1.本篇关键技术点及其释义 2.实际需求和目标 3.可行的三大解决方案 4.微服务与传统服务的差别 5.代码大纲:安装依赖及nameko五个完整的代码示例 6.附录:docker的在线安装方式 ...

  9. 技术实践:教你用Python搭建gRPC服务

    摘要:gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf序列化协议开发,且支持众多开发语言. 本文分享自华为云社区& ...

最新文章

  1. Ubuntu14.04 64位机上安装cuda8.0+cudnn5.0操作步骤
  2. (转)理解android.intent.action.MAIN 与 android.intent.category.LAUNCHER
  3. jquery基本操作
  4. 小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D
  5. Django3 --- ASGI
  6. Oracle 数据怎么实时同步到 SQL Server | 亲测干货分享建议收藏
  7. MySQL数据库备份
  8. IEEE极限编程:Word Ordering
  9. 推荐一个 Linux 刻盘工具 gcdw(转)
  10. JavaScript-幸运转盘-抽奖
  11. 【集合论】等价关系个数计算问题 ( 有序对个数计算 | 二元关系个数计算 | 划分 | 等价关系 )
  12. HTML常用标签(上)
  13. 嵌入式开发-STM32硬件I2C驱动OLED屏
  14. No version of NDK matched the requested version xxx 问题解决
  15. Spring boot (21)多数据源引起的循环引用和AutoConfigureAfter失效的问题
  16. HEVC解码器HM源码阅读(二)解码器中类的介绍
  17. 【vue】手动实现vue的v-model语法糖,以及控制在输入法完成之后才更新model
  18. Pandas导出CSV文件中文乱码解决方法
  19. 数字角频率和模拟角频率和物理频率和归一化角频率的关系,及FFT频率和实际物理频率的关系分析
  20. 进阶篇——数据库的索引

热门文章

  1. html设计网页板块,网页设计
  2. stream流常用方法_Java8-Stream关键知识点
  3. excel能创建html吗,如何通过Excel电子表格使用循环创建单独的HTML发布页面
  4. IDEA自定义快捷键
  5. 利用jmeter对mysql数据库进行压力测试
  6. java版b2b2c社交电商spring cloud分布式微服务(八)springboot整合mongodb
  7. mod libs 课堂
  8. FastD 最佳实践二: 构建配置中心
  9. 负值之美:负margin在页面布局中的应用
  10. AngularJS 学习笔记 (六) 基本概念和用法 之 Service与Provider