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 Trie树实现字典排序
Mar 28 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
Mar 19 Python
深入Python函数编程的一些特性
Apr 13 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
python从入门到精通 windows安装python图文教程
May 18 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
python实现梯度法 python最速下降法
Mar 24 Python
解决更改AUTH_USER_MODEL后出现的问题
May 14 Python
Python unittest基本使用方法代码实例
Jun 29 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
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
php实现简单的上传进度条
2015/11/17 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
Python中__init__和__new__的区别详解
2014/07/09 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
大学军训感言400字
2014/03/11 职场文书
低碳生活倡议书
2014/04/14 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
体育活动总结
2015/02/04 职场文书
MySQL Router的安装部署
2021/04/24 MySQL