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输出9*9乘法表的方法
May 25 Python
Python实现八皇后问题示例代码
Dec 09 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
用python画一只可爱的皮卡丘实例
Nov 21 Python
Windows上安装tensorflow  详细教程(图文详解)
Feb 04 Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 Python
Python telnet登陆功能实现代码
Apr 16 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
如何解决python多种版本冲突问题
Oct 13 Python
Python爬虫之Selenium库的使用方法
Jan 03 Python
pandas按条件筛选数据的实现
Feb 20 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
15种PHP Encoder的比较
2007/03/06 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
destoon常用的安全设置概述
2014/06/21 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
JavaScript 继承的实现
2009/07/09 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
jquery validate demo 基础
2015/10/29 Javascript
javascript中数组和字符串的方法对比
2016/07/20 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
JS常见算法详解
2017/02/28 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
Python守护进程(daemon)代码实例
2015/03/06 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
Python ini文件常用操作方法解析
2020/04/26 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
自我鉴定书面格式
2014/01/13 职场文书
2014年后勤工作总结
2014/11/18 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技