Python 正在尝试在CherryPy服务器上部署Flask应用程序

Python 正在尝试在CherryPy服务器上部署Flask应用程序,python,flask,cherrypy,cheroot,Python,Flask,Cherrypy,Cheroot,我试图在CherryPy服务器上部署我的Flask应用程序。我喜欢它的简单和简约的本质 所以我像下面那样点了樱桃 pip install CherryPy-15.0.0-py2.py3-none-any.whl 并且写了下面这样的脚本——很多人都建议这样做 from cherrypy import wsgiserver from hello import app d = wsgiserver.WSGIPathInfoDispatcher({'/': app}) server = wsgise

我试图在CherryPy服务器上部署我的Flask应用程序。我喜欢它的简单和简约的本质

所以我像下面那样点了樱桃

pip install CherryPy-15.0.0-py2.py3-none-any.whl
并且写了下面这样的脚本——很多人都建议这样做

from cherrypy import wsgiserver
from hello import app

d = wsgiserver.WSGIPathInfoDispatcher({'/': app})
server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 80), d)

if __name__ == '__main__':
   try:
      server.start()
   except KeyboardInterrupt:
      server.stop()
令我惊讶的是,我犯了错误。在谷歌搜索了几次之后,我了解到我必须将我的导入行更改为cheroot以使其正常工作

from cheroot.wsgi import Server
from cheroot.wsgi import PathInfoDispatcher
现在,我的代码运行良好。 然而,我有点困惑,这是使用CherryPy WSGI服务器的正确方法还是我使用了错误的CherryPy版本。我很困惑,因为Cheroot似乎已经有一年多的历史了(可以追溯到2014年),但我在CherryPy WSGI服务器上的Flask周围找到的所有信息都是使用CherryPy import wsgiserver的
,而不是Cheroot.WSGI import server的
,甚至是最新的帖子

这让我不确定我是否做了正确的事情

有人能解释一下这种混淆吗?

()是一种低级HTTP和WSGI服务器,它曾经是()的一部分,但不久前已被分解成单独的回购协议。所以前一个
cherrypy.wsgiserver
已经移动到
cheroot.wsgi
模块

它是完全可替换的,并且允许开发人员直接依赖Cheroot,如果他们只使用WSGI服务器,而不需要CherryPy的其他部分

下面是如何以版本无关的方式使用它:

try:
    from cheroot.wsgi import Server as WSGIServer, PathInfoDispatcher
except ImportError:
    from cherrypy.wsgiserver import CherryPyWSGIServer as WSGIServer, WSGIPathInfoDispatcher as PathInfoDispatcher

from hello import app

d = PathInfoDispatcher({'/': app})
server = WSGIServer(('0.0.0.0', 80), d)

if __name__ == '__main__':
   try:
      server.start()
   except KeyboardInterrupt:
      server.stop()

Cheroot是HTTP+WSGI服务器,它曾经是CherryPy的一部分,但现在被转移到一个单独的项目中。现在它是CherryPy的一个依赖项,它允许其他只想使用WSGI的人只使用CherRoot,而不必安装整个CherryPy框架。您可以安全地用更新的框架替换该导入。感谢您提供的信息。我可以假设所有功能a都以相同的方式使用不同的包装吗?另外,你能把你的评论移到回答吗?是的,可能会有一些重命名,但一般来说,您只需使用不同的导入即可。