在CherryPy服务器上部署Flask应用程序

时间:2018-06-18 22:27:58

标签: python flask cherrypy

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

所以我PIP和CherryPy一样,如下所示

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周围发现的所有信息都使用from cherrypy import wsgiserver,而不是from cheroot.wsgi import Server,甚至最新帖子。

这让我不确定我是否正在做正确的事。

有人可以解释这种混乱吗?

1 个答案:

答案 0 :(得分:3)

Cherootsrc)是低级HTTP和WSGI服务器,曾经曾经是CherryPysrc)的一部分,但是已经被分解一会儿再进入一个单独的仓库。因此以前的cherrypy.wsgiserver已移至cheroot.wsgi模块。

它是完全可替换的,旨在允许开发人员在仅使用WSGI服务器而不需要CherryPy其他部分的情况下直接依赖Cheroot。

因此,您可以按照与版本无关的方式使用它:

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()