【问题标题】:Cherrypy as windows service. Path not foundCherrypy 作为 Windows 服务。找不到路径
【发布时间】:2015-01-12 12:12:27
【问题描述】:

我已经设法让我的(烧瓶)应用程序使用cherrypy作为wsgi服务器运行,如下所示:

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 服务,但遇到了问题。这是代码: 进口樱桃 从 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.") 

我无法理解配置中的差异。任何想法都非常受欢迎!

【问题讨论】:

    标签: python windows-services cherrypy


    【解决方案1】:

    好吧,我觉得自己很愚蠢。在我的服务模块中,我做了:

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

    将其更改为:

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

    而且它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多