我的公司昨天刚刚在 AWS 中更新了我们的 RDS 数据库,突然我在之前运行的应用程序中遇到了一个奇怪的错误。
AttributeError:模块“ssl”没有属性“wrap_socket”
经过一番搜索,我发现它可能是 Python 中不再支持的函数。我尝试过一些建议的更改,我能做的最好的事情就是达到以下目的: Lost connection to MySQL server at '127.0.0.1:9198', system error: 524297 [SSL] PEM lib (_ssl.c :3917)
#self.sock = ssl.wrap_socket(
# self.sock, keyfile=key, certfile=cert, ca_certs=ca,
# cert_reqs=cert_reqs, do_handshake_on_connect=False,
# ssl_version=ssl.PROTOCOL_TLSv1, ciphers=cipher)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_verify_locations(ca)
context.load_cert_chain(certfile=cert, keyfile=key)
context.set_ciphers(cipher)
self.socket = context.wrap_socket(self.socket, server_side=False, do_handshake_on_connect=False)
注释掉的部分是我之前的内容,未注释的部分是我将其更改为我收到新错误的部分。
任何有关我无法连接的原因的想法将不胜感激?
第一个错误是有道理的——
wrap_socket()
确实不是ssl
的顶级函数,而是SSLContext
的方法;你删除那行是对的。
至于另一个错误,这张海报解释说,
system error: 524297 [SSL]
表示私钥文件不正确——如果您的数据库已更新,这可能是有意义的!