Python創建Windows 服務

ybw8 9年前發布 | 2K 次閱讀 Python

Python 寫windows 服務,需要使用 pywin32包。

直接上代碼:

#encoding=utf8

'''
Created on 2014-7-1

@author: wangmengnan
'''


import os
import sys
import win32serviceutil
import win32service
import win32event

class PythonService(win32serviceutil.ServiceFramework):
    #服務名
    _svc_name_ = "PythonService"
    #服務顯示名稱
    _svc_display_name_ = "Python Service Demo"
    #服務描述
    _svc_description_ = "Python service demo."

    def __init__(self,args):
        win32serviceutil.ServiceFramework.__init__(self,args)
        self.hWaitStop = win32event.CreateEvent(None,0,0,None)
        self.logger = self._getLogger()
        self.isAlive = True

    def _getLogger(self):
        import logging
        import os
        import inspect

        logger = logging.getLogger('[PythonService]')

        this_file = inspect.getfile(inspect.currentframe())
        dirpath = os.path.abspath(os.path.dirname(this_file))
        handler = loggint.FileHandler(os.path.join(dirpath,"service.log"))
        formatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname) -8s %(message)s')
        handler.setFormatter(formatter)

        logger.addHandler(handler)
        logger.setLevel(logging.INFO)

        return logger
    def SvcDoRun(self):
        import time
        self.logger.error("svc do run...")
        while self.isAlive:
            self.logger.error("I am alive.")
            time.sleep(1)

    def SvcStop(self):
        self.logger.error("svc do stop...")
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        #設置事件
        win32event.SetEvent(self.hWaitStop)
        self.isAlive = False


if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(PythonService)



程序寫好后,需要對服務進行安裝、以及啟動等操作,命令如下:


安裝服務:

python service.py install

讓服務自動啟動:

python service.py --startup auto install

啟動服務:


python service.py start



重啟服務:
python service.py restart


停止服務:
python service.py stop


刪除/卸載服務

python service.py remove

安裝并啟動服務后,可以通過 計算機 -> 管理 ->服務和應用程序 ->服務 里面找到我們自己寫的服務,圖片如下:




轉載請注明出處:http://blog.csdn.net/sogouauto

 本文由用戶 ybw8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!