CherryPy + PyWin32 应用
老版本的 cherrypy
 # coding=cp936
import cherrypy
import win32serviceutil
import win32service
import win32event
 class HelloWorld:
    """ 请求句柄例子 """
    # 暴露对象
    @cherrypy.expose
    def index(self):
        # 只做测试用,所以只返回简单内容
        return "Hello world!"
 class MyService(win32serviceutil.ServiceFramework):
    """NT 服务"""
    # 服务名
    _svc_name_ = "CherryPyService"
    # 服务显示名称
    _svc_display_name_ = "CherryPy Service"
     def __init__(self, args):
        win32serviceutil.ServiceFramework.__init__(self, args)
        # 创建一个事件
        self.stop_event = win32event.CreateEvent(None, 0, 0, None)
     def SvcDoRun(self):
        cherrypy.root = HelloWorld()
       
        # 更新配置,当使用配置文件时,必须为一个绝对路径
        cherrypy.config.update({
            'global':{
                'server.socketPort' : 81,
                'server.environment': 'production',
                'server.logToScreen': False,
                'server.log_file': 'e:\\edit\\log.txt',
                'server.log_access_file': 'e:\\edit\\log.txt',
                'autoreload.on' : False,
                'server.logTracebacks' : True
                }
            })
        # 设置 initOnly=True
        cherrypy.server.start(initOnly=True)
        win32event.WaitForSingleObject(self.stop_event, \
                                       win32event.INFINITE)
   
    def SvcStop(self):