如何使用 HTTPS 在 CherryPy WSGI 服务器 (Cheroot) 上运行 Flask 应用程序?

Kay*_*Kay 3 wsgi cherrypy flask python-2.7 cheroot

我现在使用 HTTP 在 CherryPy Cheroot WSGI 服务器上运行 Python 2.7 Flask 应用程序,如下所示。

from cheroot.wsgi import Server as WSGIServer
from cheroot.wsgi import PathInfoDispatcher as WSGIPathInfoDispatcher

from MyFlaskApp import app

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

if __name__ == '__main__':
   try:
      server.start()
   except KeyboardInterrupt:
      server.stop()
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能从这里转移到 HTTPS?我找到了以下说明,但它似乎不适用于我的应用程序。

from cheroot.server import HTTPServer
from cheroot.ssl.builtin import BuiltinSSLAdapter

HTTPServer.ssl_adapter = BuiltinSSLAdapter(
        certificate='cert/domain.crt', 
        private_key='cert/domain.key')
Run Code Online (Sandbox Code Playgroud)

我可以将上述示例应用到 Cheroot 上的 Flask 应用程序吗?如果没有,Cheroot 上用于 HTTPS 的 Flask 应用程序的简单示例是什么?

Kay*_*Kay 5

我想出了必要的修改。关于 Cheroot 上带有 https 的 Flask 应用程序的信息不多,所以我想我会分享它。

from cheroot.wsgi import Server as WSGIServer
from cheroot.wsgi import PathInfoDispatcher as WSGIPathInfoDispatcher
from cheroot.ssl.builtin import BuiltinSSLAdapter

from MyFlaskApp import app

my_app = WSGIPathInfoDispatcher({'/': app})
server = WSGIServer(('0.0.0.0', 443), my_app)

ssl_cert = "[path]/myapp.crt"
ssl_key = "[path]/myapp.key"
server.ssl_adapter =  BuiltinSSLAdapter(ssl_cert, ssl_key, None)

if __name__ == '__main__':
   try:
      server.start()
   except KeyboardInterrupt:
      server.stop()
Run Code Online (Sandbox Code Playgroud)

  • 哦,嘿,这里有一个关于 Python 2.7 EOL 的强制性提醒:https://pythonclock.org/ (2认同)