【发布时间】:2020-12-05 08:49:11
【问题描述】:
我有一个非常简单的程序来发送邮件,它使用 pythons smtplib 通过安全套接字发送邮件。由于某种原因,套接字创建大约需要 80 秒。这是我使用的代码:
with smtplib.SMTP_SSL(config['SMTP_HOST'], config['SMTP_PORT']) as server:
# Send mail here
创建套接字后,一切运行顺利且快速。该问题的临时“修复”是通过一个小的超时,如下所示:
with smtplib.SMTP_SSL(config['SMTP_HOST'],config['SMTP_PORT'], timeout=0.5) as server:
# Send mail here
现在创建套接字需要 0.5 秒。
有人知道为什么会发生这种情况吗?我使用python 3.9。我在 python 3.7 中对其进行了测试,但遇到了同样的问题。完全相同的脚本会立即在其他计算机上运行,所以它可能与 python 无关?我运行 macOS Big Sur 11.0.1。
【问题讨论】:
-
您是说连接需要 80 秒,还是 80 秒后超时?你的第二个例子表明你没有得到连接,你得到了超时。如果您遇到超时,那么您的问题中几乎没有任何信息可以找出原因。
-
第一个示例需要 80 秒才能运行。我认为我没有超时,因为在那 80 秒之后它正在发送邮件并且没有超时错误。所以可能需要这 80 秒才能连接。为什么在这种情况下设置一个小的超时时间会有所帮助:不知道。
标签: python sockets smtp smtplib