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 30 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
Python中正则表达式详解
May 17 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
Aug 09 Python
DJANGO-URL反向解析REVERSE实例讲解
Oct 25 Python
Python Sympy计算梯度、散度和旋度的实例
Dec 06 Python
Python将列表中的元素转化为数字并排序的示例
Dec 25 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
Python下opencv库的安装过程及问题汇总
Jun 11 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后台程序与Javascript的两种交互方式
2009/10/25 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
laravel入门知识点整理
2020/09/15 PHP
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
详解redux异步操作实践
2018/08/15 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
编程语言Python的发展史
2014/09/26 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
keras K.function获取某层的输出操作
2020/06/29 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
html5的localstorage详解
2017/05/09 HTML / CSS
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
党员自我评价分享
2013/12/13 职场文书
实习心得体会
2014/01/02 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
化工专业自荐书
2014/06/16 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
Pytest中skip skipif跳过用例详解
2021/06/30 Python
Python 多线程处理任务实例
2021/11/07 Python