zoukankan      html  css  js  c++  java
  • Python在windows下的服务程序

    Python程序作为Windows服务启动,需要安装pywin32包。下载路径:

    我是下载路径

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    import win32serviceutil
    import win32service
    import win32event
     
    class PythonService(win32serviceutil.ServiceFramework):
    """
    Usage: 'PythonService.py [options] install|update|remove|start [...]|stop|restart [...]|debug [...]'
    Options for 'install' and 'update' commands only:
    --username domainusername : The Username the service is to run under
    --password password : The password for the username
    --startup [manual|auto|disabled|delayed] : How the service starts, default = manual
    --interactive : Allow the service to interact with the desktop.
    --perfmonini file: .ini file to use for registering performance monitor data
    --perfmondll file: .dll file to use when querying the service for
    performance data, default = perfmondata.dll
    Options for 'start' and 'stop' commands only:
    --wait seconds: Wait for the service to actually start or stop.
    If you specify --wait with the 'stop' option, the service
    and all dependent services will be stopped, each waiting
    the specified period.
    """
    #服务名
    _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 = logging.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)
    # 等待服务被停止
    #win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)
     
    def SvcStop(self):
    # 先告诉SCM停止这个过程
    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)
    • 安装服务
    1
    python PythonService.py install
    • 让服务自动启动
    1
    python PythonService.py --startup auto install
    • 启动服务
    1
    python PythonService.py start
    • 重启服务
    1
    python PythonService.py restart
    • 停止服务
    1
    python PythonService.py stop
    • 删除/卸载服务
    1
    python PythonService.py remove
     
     
     
     
    http://daodaoliang.com/Python%E5%AD%A6%E4%B9%A0/2015/06/09/Python%E5%AD%A6%E4%B9%A0-2015-06-09-python%E5%9C%A8windows%E4%B8%8B%E7%9A%84%E6%9C%8D%E5%8A%A1/
  • 相关阅读:
    flink 读取kafka 数据,partition分配
    Flink 报错 "Could not find a suitable table factory for 'org.apache.flink.table.factories.StreamTableSourceFactory' in the classpath"
    flume接收http请求,并将数据写到kafka
    【翻译】Flume 1.8.0 User Guide(用户指南) Processors
    【翻译】Flume 1.8.0 User Guide(用户指南) Channel
    【翻译】Flume 1.8.0 User Guide(用户指南) Sink
    【翻译】Flume 1.8.0 User Guide(用户指南) source
    【翻译】Flume 1.8.0 User Guide(用户指南)
    Apache Flink 简单安装
    Java之使用IDE
  • 原文地址:https://www.cnblogs.com/findumars/p/7002904.html
Copyright © 2011-2022 走看看