阿里云邮件发送问题
mail_host = “smtp.mxhichina.com”
#mail_host = “smtp.qiye.aliyun.com”
smtpObj = smtplib.SMTP_SSL(mail_host, 465)
个人账号邮件发送
mail_host 填写为smtp.mxhichina.com
填写成smtp.qiye.aliyun.com 发送会有失败的情况
NoHttpResponseException问题
如果不是高并发的情况丢失链接
就可能是Keep-Alive客户端设置的问题
Connection: Keep-Alive 是用于 HTTP持久连接 的字段。
在 HTTP 1.1 中 所有的连接默认都是持续连接,除非特殊声明不支持。目前服务器端默认为 5-15 秒,可以设置。
以你的例子:一次请求了六个接口
如果开启HTTP持久连接,则此 6 个请求走同一条 TCP 连接,走同一条 HTTP 流。5 秒之内的所有请求都复用此 TCP 连接。当 5秒钟之内没有其他请求后,此连接断开。(一条长连接)
如果不HTTP持久连接,则此 6 个请求需要发起 6 条 TCP 连接(包括三次握手等),HTTP 请求后立刻断开,TCP 连接根据 操作系统 的释放规则进行释放。(6 条短连接)
开启后的优点:TCP 连接数比较少,所以随之而来和 TCP 相关的优点全都来了。其实和 HTTP 没什么关系,主要是大幅降低服务器端因大量新建 TCP 连接造成的 CPU负载,以及 TCP 传输相关的拥塞控制问题。
开启后的缺点:这个协议是为 HTTP1.1 而存在的,已经不完全适合现有的网络状况。以前带宽小,瞬时请求高,所以用这个方法降低 TCP 新建。但现在带宽大,并发高。如果 HTTP 服务存在长轮训或较长间隔请求,而且超过 Keep-Alive 的设置(比如 Keep-Alive 5 秒,但轮训周期是 6 秒),则可能会造成大量的无用途连接,白白占用系统资源。
所以具体是否设置 Connection: Keep-Alive ,以及后续 Keep-Alive 的参数设置,需要根据你网站业务来合理规划。
PS: HTTP/2 没有这玩意,用的是更先进的直接基于TCP层次的连接管理。