python实现在windows服务中新建进程的方法


Posted in Python onJune 30, 2015

本文实例讲述了python实现在windows服务中新建进程的方法。分享给大家供大家参考。具体实现方法如下:

需要安装的软件:python和pywin32,我这里装的分别是python-2.6.amd64、pywin32-217.win-amd64-py2.6

文件名:dma_ws.py

#!python
import win32serviceutil 
import win32service 
import win32event
import os 
from subprocess import Popen, PIPE
import json
import signal
run_proc = None
class DMA_WS(win32serviceutil.ServiceFramework): 
 _svc_name_ = "DMA_WS"
 _svc_display_name_ = "DMA_WS"
 def __init__(self, args): 
  win32serviceutil.ServiceFramework.__init__(self, args) 
  self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) 
 def SvcStop(self):   
  self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) 
  win32event.SetEvent(self.hWaitStop) 
 def SvcDoRun(self):
  f = file('C:/DXMonitorSystem/dma.conf')
  host = json.load(f)
  f.close()
  dxsrv = os.path.join(host['app_path'], 'DXHttpServer.py')
  run_proc = Popen([host['ironpython'], dxsrv],
      stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False,
      cwd=host['app_path'])
      #这里新建进程,注意cwd参数必不可少且要是绝对路径
  #res, err = run_proc.communicate()
  #这个函数内的上面部分都是逻辑处理的部分,可以根据自己的需求订制,但下面这行代码任何服务都需要
  win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE) 
  run_proc.kill() # 用于关闭服务所创建的子进程
  #os.kill(run_proc.pid, signal.SIGTERM)
if __name__=='__main__':
 win32serviceutil.HandleCommandLine(DMA_WS)

使用方法:

创建服务:Python dma_ws.py install

开始服务:python dma_ws.py start

停止服务:python dma_ws.py stop

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python实现的金山快盘的签到程序
Jan 17 Python
python实现的希尔排序算法实例
Jul 01 Python
Python中标准模块importlib详解
Apr 16 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
python程序封装为win32服务的方法
Mar 07 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
Jun 21 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
pytorch实现从本地加载 .pth 格式模型
Feb 14 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 Python
python 录制系统声音的示例
Dec 21 Python
用Python制作音乐海报
Jan 26 Python
Python Selenium异常处理的实例分析
Feb 28 Python
python实现线程池的方法
Jun 30 #Python
python实现的简单FTP上传下载文件实例
Jun 30 #Python
编写Python CGI脚本的教程
Jun 29 #Python
Python访问纯真IP数据库脚本分享
Jun 29 #Python
Python实现把数字转换成中文
Jun 29 #Python
Python中if __name__ == '__main__'作用解析
Jun 29 #Python
django接入新浪微博OAuth的方法
Jun 29 #Python
You might like
SONY ICF-F10中波修复记
2021/03/02 无线电
PHP实现的sqlite数据库连接类
2014/12/12 PHP
php的ddos攻击解决方法
2015/01/08 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
JavaScript中string对象
2015/06/12 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
js选项卡的制作方法
2017/01/23 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python如何使用unittest测试接口
2018/04/04 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
中国旅游网站:同程旅游
2016/09/11 全球购物
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
全球性的在线购物网站:Zapals
2017/03/22 全球购物
Ref与out有什么不同
2012/11/24 面试题
生产部管理制度
2014/01/31 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
python基础之模块的导入
2021/10/24 Python
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL