2015-01-12 52 views
0

我manged让我(瓶)的应用程序与CherryPy的是这样的WSGI服务器上运行:Cherrypy as windows service。找不到路径

from mypyapp import app 
import cherrypy 

if __name__ == '__main__': 
    cherrypy.tree.graft(app, "/") 
    cherrypy.config.update({ 
     'log.screen': True, 
     'server.socket_port': 8888, 
    }) 
    cherrypy.engine.start() 
    cherrypy.engine.block() 

现在我想将它安装为Windows服务,我遇到的问题。下面的代码: 进口的CherryPy 从mypyapp导入应用

class PyWebService(win32serviceutil.ServiceFramework): 
    """ Py Web Service """ 

    def SvcDoRun(self): 
     cherrypy.tree.mount(app, "/") 

     cherrypy.config.update({ 
      'global': { 
      'engine.autoreload.on': False, 
      'log.screen': False, 
      'log.error_file': 'c:\\Temp\\error.log', 
      'engine.SIGHUP': None, 
      'engine.SIGTERM': None, 
      'server.socket_port': 8888, 
     } 
     }) 

     cherrypy.engine.start() 
     cherrypy.engine.block() 

    def SvcStop(self): 
     self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) 
     cherrypy.engine.exit() 
     self.ReportServiceStatus(win32service.SERVICE_STOPPED) 

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

我可以安装和运行服务,并在日志中表明它是没有任何问题运行输出。但是,当我尝试用浏览器访问服务器,我得到404

404 Not Found 

The path '/' was not found. 

Traceback (most recent call last): 
    File "C:\Users\viktor.forsman\IdeaProjects\cfas\venv\lib\site-packages\cherrypy\_cprequest.py", line 670, in respond 
    response.body = self.handler() 
    File "C:\Users\viktor.forsman\IdeaProjects\cfas\venv\lib\site-packages\cherrypy\lib\encoding.py", line 217, in __call__ 
self.body = self.oldhandler(*args, **kwargs) 
    File "C:\Users\viktor.forsman\IdeaProjects\cfas\venv\lib\site-packages\cherrypy\_cperror.py", line 411, in __call__ 
    raise self 
NotFound: (404, "The path '/' was not found.") 

我无法理解的差异可以在配置什么。任何想法都非常受欢迎!

回答

0

好吧,我觉得很愚蠢。在我的服务模块,我所做的:

cherrypy.tree.mount(app, "/") 

更改为:

cherrypy.tree.graft(app, "/") 

和它的作品。