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的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
Python基于scrapy采集数据时使用代理服务器的方法
Apr 16 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
windows上安装Anaconda和python的教程详解
Mar 28 Python
Python3多线程基础知识点
Feb 19 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
pandas分区间,算频率的实例
Jul 04 Python
django框架forms组件用法实例详解
Dec 10 Python
python实现12306登录并保存cookie的方法示例
Dec 17 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 Python
Python 数据可视化工具 Pyecharts 安装及应用
Apr 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
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
JQuery 常用操作代码
2010/03/14 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
JSONP跨域请求
2017/03/02 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
python中执行shell命令的几个方法小结
2014/09/18 Python
Python实现抓取网页并且解析的实例
2014/09/20 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
Python实现二分查找与bisect模块详解
2017/01/13 Python
区分python中的进程与线程
2020/08/13 Python
python实现银行账户系统
2021/02/22 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
高职教师岗位职责
2013/12/24 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
假释思想汇报范文
2014/10/11 职场文书
批评与自我批评总结
2014/10/17 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
python spilt()分隔字符串的实现示例
2021/05/21 Python
openstack中的rpc远程调用的方法
2021/07/09 Python
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS