前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTPSConnectionPool(host=’xxxxx’, port=443): Max retries exceeded with url:xxxxxxxx (Caused by Ne…

HTTPSConnectionPool(host=’xxxxx’, port=443): Max retries exceeded with url:xxxxxxxx (Caused by Ne…

作者头像
kirin
发布2021-04-19 17:14:17
6.3K0
发布2021-04-19 17:14:17
举报
文章被收录于专栏:Kirin博客Kirin博客

requests.exceptions.ConnectionError: HTTPSConnectionPool(host=’baike.baidu.com’, port=443):  Max retries exceeded with url: https://baike.baidu.com/item/%E5%88%98%E5%BE%B7%E5%8D%8E/114923  (Caused by NewConnectionError(‘<urllib3.connection.VerifiedHTTPSConnection object at 0x7fb51433af98>:  Failed to establish a new connection: [Errno -2] Name or service not known’,)

http连接太多没有关闭导致的

经过一番查询,发现该错误是因为如下:

http的连接数超过最大限制,默认的情况下连接是Keep-alive的,所以这就导致了服务器保持了太多连接而不能再新建连接。

1   ip被封

2   程序请求速度过快。

解决办法如下:

第一种方法 :

try:       page1 = requests.get(ap) except requests.exceptions.ConnectionError:       r.status_code = “Connection refused”

第二种方法 :

1、增加重试连接次数     request的连接数过多而导致Max retries exceeded      在header中不使用持久连接

requests.adapters.DEFAULT_RETRIES = 5

2、关闭多余的连接

s = requests.session() s.keep_alive = False 或者   ‘Connection’: ‘close’

3、升级requests

pip install –upgrade requests

import requests url=’https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%A0%A1%E8%8A%B1&start=0&limit=1000′ page=requests.get(url)

第三种方法 :

针对请求请求速度过快导致程序报错。

解决方法可以参考以下例子:

代码语言:javascript
复制
  1. import time
  2. while True:
  3. try:
  4.         page = requests.get(url)
  5. except:
  6.         print(“Connection refused by the server..”)
  7.         print(“Let me sleep for 5 seconds”)
  8.         print(“ZZzzzz…”)
  9.         time.sleep(5)
  10.         print(“Was a nice sleep, now let me continue…”)
  11. continue
代码语言:javascript
复制

代码运行后

代码语言:javascript
复制
SSLError: HTTPSConnectionPool(host='b-ssl.duitang.com', port=443):

Requests 可以为 HTTPS 请求验证 SSL 证书,就像 web 浏览器一样。SSL 验证默认是开启的,如果证书验证失败,Requests 会抛出 SSLError:

第一种解决方法:

将verify 设置为 False,Requests 将忽略对 SSL 证书的验证

代码语言:javascript
复制
  1. import requests
  2. url=‘https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%A0%A1%E8%8A%B1&start=0&limit=1000’
  3. page=requests.get(url,verify=False)
代码语言:javascript
复制

具体见官方文档:SSL证书验证

代码语言:javascript
复制
 http://docs.python-requests.org/zh_CN/latest/user/advanced.html#ssl

第二种解决方法:

由于python2不支持SNI

具体SNI了解转:http://blog.csdn.net/makenothing/article/details/53292335

pip安装3个模块:

1.pyOpenSSL

2.ndg-httpsclient

3.pyasn1

然后在使用requests请求前添加如下代码:

代码语言:javascript
复制
  1. import urllib3.contrib.pyopenssl
  2. urllib3.contrib.pyopenssl.inject_into_urllib3()
代码语言:javascript
复制

python 安装第三方库,超时报错–Read timed out.

代码语言:javascript
复制
  1. # 解决方法,设置超时时间
  2. pip –default-timeout=100 install -U Pillow
代码语言:javascript
复制
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决办法如下:
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档