这是我使用SSL上下文的代码:

with smtplib.SMTP(host, port) as smtpserver:
    smtpserver.ehlo()
    smtpserver.starttls(context=ssl.create_default_context())
    ... etc ...


默认上下文对象是否是可以在多线程程序中共享和重用的常量?我的意思是只创建一次:

SSL_CONTEXT = ssl.create_default_context()


接着:

with smtplib.SMTP(host, port) as smtpserver:
    smtpserver.ehlo()
    smtpserver.starttls(context=SSL_CONTEXT)


发送的每条消息。

最佳答案

每个连接应具有自己的上下文。您可以在http.client的Python源代码中看到HTTPSConnection为每个连接创建新的上下文。

https://github.com/python/cpython/blob/master/Lib/http/client.py

10-08 06:43