无法在 web.py - Python 2.7 中创建 ssl 会话

can't create ssl session in web.py - Python 2.7

我正在尝试让我的服务器使用 https/ssl 连接。我有证书和密钥。 我已经尝试使用 http://webpy.org/cookbook/ssl 中的示例,但它仍然使用 http 而不是 https。我的 web.py 版本是最新的 (0.38),但我也尝试使用站点中提供的旧实现,这导致了错误:

Traceback (most recent call last):
File "/path/server.py", line 7, in <module>
from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter
File "/Library/Python/2.7/site-packages/web/wsgiserver/ssl_builtin.py", line 14, in <module>
from cherrypy import wsgiserver
ImportError: cannot import name wsgiserver

行中:

from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter

有什么解决办法吗? (我猜不是因为错误,因为它是由适合旧版本 web.py 的使用引起的,而是因为第一次实现)。

谢谢

编辑: 我的代码是 运行:

import sys
import web
from web.wsgiserver import CherryPyWSGIServer

from utils.tools import Tools

from pages.index import index
from pages.search import search
from pages.update_location import update_location
from pages.add_sn_tracking import add_sn_tracking
from pages.edit_sn_tracking import edit_sn_tracking
from pages.add_sheet_tracking import add_sheet_tracking
from pages.edit_sheet_tracking import edit_sheet_tracking


class WebServer:
    def __init__(self):
        CherryPyWSGIServer.ssl_certificate = r"/Volumes/wlutils/Users/TesterUs/snserver/server.crt"
        CherryPyWSGIServer.ssl_private_key = r"/Volumes/wlutils/Users/TesterUs/snserver/server.key"

        self.urls = (
            '/', 'index',
            '/search', 'search',
            '/update_location', 'update_location',
            '/add_sn_tracking', 'add_sn_tracking',
            '/edit_sn_tracking', 'edit_sn_tracking',
            '/add_sheet_tracking', 'add_sheet_tracking',
            '/edit_sheet_tracking', 'edit_sheet_tracking',
        )
        # web.config.debug = False
        self.app = web.application(self.urls, globals())
        self.app.run()

if __name__ == "__main__":
     w = WebServer()

要为 SSL 设置 web.py,只需设置内部 CherryPyWSGIServer:

from web.wsgiserver import CherryPyWSGIServer
CherryPyWSGIServer.ssl_certificate = "/file/my.crt"
CherryPyWSGIServer.ssl_private_key = "/file/my.key"

在致电 app = web.application(urls, globals()) 之前执行此操作。如果这对您不起作用,让我们探讨一下,而不是您正在尝试的 pre-v.0.38 解决方案,已知不适用于当前 web.py.

跟进:似乎使用了旧版本的 web.py。一旦将其更新为 0.38+,示例就可以正常工作了。