`
shijunjuan
  • 浏览: 46921 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Python Windows Service开发

 
阅读更多

注意要import script文件

另外script文件中的方法不要有控制台打印输出

 

'''
 Usage : python resartHubService.py install
 Usage : python resartHubService.py start
 Usage : python resartHubService.py stop
 Usage : python resartHubService.py remove
'''

import os
import time
import win32service
import win32serviceutil
import win32api
import win32con
import win32event
import win32evtlogutil
from restartHub import RestartHub
import servicemanager


class RestartHubService(win32serviceutil.ServiceFramework):
	_svc_name_ = "RestartHubService"
	_svc_display_name_ = "RestartHubService"
	_svc_description_ = "RestartHubService"

	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):
		
		
		servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,servicemanager.PYS_SERVICE_STARTED,(self._svc_name_, '')) 
		

		self.timeout = 2000
		
		servicemanager.LogInfoMsg("Running restart service program..")
		
		try:
			service = RestartHub()
			service.restartHubMain()
		except:
			
			pass
		while 1:
			
			rc = win32event.WaitForSingleObject(self.hWaitStop, self.timeout)
			# Check to see if self.hWaitStop happened
			if rc == win32event.WAIT_OBJECT_0:
				# Stop signal encountered
				servicemanager.LogInfoMsg("The %s service has stoped." % self._svc_name_)
				service.stopJob()
				break
		
		
def ctrlHandler(ctrlType):
	return True

if __name__ == '__main__':
	win32api.SetConsoleCtrlHandler(ctrlHandler, True)   
	win32serviceutil.HandleCommandLine(RestartHubService)

# Done! Lets go out and get some dinner, bitches!

 

 这里我调用的是一个Cron Job,所以没有使用while 1的loop,而是直接调用

service = RestartHub()

service.restartHubMain()

并且需要处理service stop的信号,service.stopJob()

 

这是job的代码:

def restartHubMain(self):
		self.write(self.hostname)
		self.scheduler = Scheduler(daemonic = False)
		self.scheduler.start()
		job = self.scheduler.add_cron_job(self.restartService,day_of_week=self.day_of_week,hour=self.hour,minute=self.minute,second=self.second)


	def stopJob(self):
		self.scheduler.shutdown()

 

分享到:
评论

相关推荐

    Python编写Windows Service服务程序

    对于开发者来说,使用Python来开发Windows服务程序是一个不错的选择。然而,由于Python本身并不直接支持Windows服务,因此需要借助于第三方库`pywin32`来实现这一功能。本文将详细介绍如何使用Python结合`pywin32`来...

    SOAPpy安装 python web service必备

    在标题“SOAPpy安装 python web service必备”中,我们可以理解到SOAPpy是Python开发Web服务的关键组件,对于构建基于SOAP的服务至关重要。它简化了与SOAP服务交互的复杂性,使得开发过程更为便捷。 描述中提到的...

    Windows Service Wrapper 1.9

    Windows Service Wrapper 1.9 是一个开源工具,主要用于将任何可执行程序(如Java应用、Python脚本等)包装成Windows服务,使得这些程序可以在系统启动时自动运行,并具有后台服务应有的特性,如自动重启、独立于...

    使用 python 开发 Web Service安装包ZSI

    Python是一种强大的、面向对象的编程语言,常用于开发各种应用程序,包括Web服务。Web服务允许不同的应用程序通过网络互相通信,实现数据交换。ZSI(Zolera Soap Infrastructure)是Python中一个专门用于开发和处理...

    Eclipse搭建JAVA,PYTHON,Neo4j开发平台

    - 安装过程中可能遇到的问题,如`windows-service-wrapper-4.jar`解析错误,需要手动修改安装脚本`base.bat`中的相关配置。 - 在CMD中运行安装命令启动Neo4j服务。 5. **连接Java与Neo4j**: - 使用Maven作为...

    python3.4.4(win xp sp3)

    Python 3.4.4是Python编程语言的一个稳定版本,主要针对Windows XP Service Pack 3 (SP3) 32位操作系统设计。该版本在2015年发布,为用户提供了更新的功能和修复了一些已知的问题。在XP SP3上安装这个版本的Python,...

    Python-100-Days5.22版本.pdf

    Python在云基础设施、DevOps、网络爬虫、数据分析、机器学习等领域有广泛的应用,包括Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、图像识别和处理等...

    pythonwin 源码(最新版)

    6. **模块封装**:pywin32 将许多 Windows 相关的库封装为 Python 可以使用的模块,如 `win32print` 用于打印,`win32service` 用于服务管理,`win32ui` 用于 GUI 编程等。 7. **兼容性**:Pythonwin 和 pywin32 ...

    使用Python和node.js轻松为Windows开发输入法-Python开发

    PIMETextService包含主干暗示PIME通过Text Services Framework轻松为Windows实施输入法:LibIME包含旨在成为Windows Text Service Framework(TSF)的简单包装的库。 PIMETextService包含用于使用libIME的Windows...

    Python库 | Fragment-Service-Provider-0.0.1a2.tar.gz

    "Fragment-Service-Provider-0.0.1a2.tar.gz"是一个针对Python开发的库,名为Fragment Service Provider。这个库的版本号是0.0.1a2,表明它是该库的早期版本,可能还处于alpha测试阶段,意味着它可能包含未完善的...

    mkl_service-2.4.0-cp311-cp311-win_amd64 (1).whl.zip

    《Python中的whl文件及其应用——以mkl_service-2.4.0-cp311-cp311-win_amd64 (1).whl为例》 在Python编程环境中,whl(Wheel)文件是一种预...正确理解和使用whl文件,将有助于提升Python项目的开发效率和运行性能。

    Python-把任何循环的ps1脚本转成一个Windows服务

    这是一种由Microsoft开发的命令行外壳程序和脚本语言,用于自动化Windows操作系统和管理任务。循环是PowerShell脚本中常见的一种结构,可以用来执行重复性任务。 然后,我们来看如何使用Python将这个循环的`.ps1`...

    python_oracle

    在IT行业中,Python是一种广泛应用的编程语言,尤其在数据分析、Web开发和自动化任务等领域。而Oracle则是一款功能强大的关系型数据库管理系统,广泛用于企业级的数据存储和管理。当我们需要使用Python来连接并操作...

    【Pycharm(Win)+Python2(Linux)开发环境搭建】

    在搭建跨平台的Pycharm(Win)+Python2(Linux)开发环境过程中,涉及到的关键知识点可以分为以下几个方面: 1. 系统版本说明: - Windows端:使用的是Windows 7 64位操作系统。 - Linux端:使用的是Ubuntu 14.04.5 ...

    python系统服务源码

    在Windows平台上,Python可以使用`win32service`和`win32serviceutil`这两个第三方库来创建和管理服务。这两个库是`pywin32`套件的一部分,它提供了与Windows API交互的接口。`windowsvc.py`中可能包含了定义服务类...

    解决pip和python中出现Microsoft Visual C++ 14.0问题

    标签中的“windows service”可能暗示了该服务器正在作为Windows服务运行,这意味着它可能在后台无用户交互的情况下运行Python应用程序。而“pip”标签则明确指出问题与Python的包管理工具pip有关。 压缩包中的文件...

    Python-ThriftPy2是ApacheThrift的纯python实现

    **Python开发-RPC 服务器:** 在Python中,ThriftPy2 提供了一种构建 RPC 服务器的高效方式。通过定义服务接口,开发者可以快速创建服务实例并绑定到特定端口,然后启动服务器监听客户端的请求。服务端处理请求后,...

    windows Azure开发的一个云程序

    总之,Windows Azure提供了一个全面的云开发环境,使得构建和部署“FirstCloudApp”这样的简单云程序变得简单而高效。通过学习和掌握Azure的各种服务和工具,开发者可以构建更复杂、可扩展且高度可用的应用程序,...

    python-oracle 64安装包

    Python是一种广泛使用的高级编程语言,尤其在数据处理、科学计算和Web开发领域有着重要的应用。Oracle数据库则是全球领先的商业数据库管理系统,广泛应用于大型企业级应用。`python-oracle 64安装包`是为了让Python...

Global site tag (gtag.js) - Google Analytics