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

Trying to deploy a Flask app on CherryPy server

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

所以我像下面这样 PIP'd 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,甚至最新的帖子。

这让我不确定自己是否做对了。

有人可以解释一下这个困惑吗?

Cheroot (src) is a low-level HTTP and WSGI server, which used to be a part of CherryPy (src) 一次,但不久前被分解到一个单独的回购协议中。所以之前的 cherrypy.wsgiserver 已经移动到 cheroot.wsgi 模块。

它是完全可替换的,旨在让开发人员如果只使用 WSGI 服务器就可以直接依赖 Cheroot,而不需要 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()