python读API数据到数据库报错requests.exceptions.ConnectionError

在Python脚本中,作者遇到从API获取数据并存入MySQL数据库时出现`requests.exceptions.ConnectionError`的问题。错误源于可能的HTTP代理服务器不遵循标准或API访问过于频繁。为解决这个问题,作者采取了两种策略:降低访问频率和捕获异常。通过调整代码以捕获该异常,脚本能够继续运行,即使遇到类似问题也能正常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写一个一个读取API接口数据的Python脚本,收集数据到Mysql数据库中
脚本同学要辛勤地日夜运行,可是,大约三天后,它,,挂了,
查看 Log 日志,发现报了如下错误

requests.exceptions.ConnectionError: HTTPConnectionPool(host='xx.xx.xx.xx', port=8080): Max retries exceeded with url: /myurl (Caused by <class 'httplib.BadStatusLine'>: '')

这里大概是在说

Looking at stack trace you’ve provided your error is caused by httplib.BadStatusLine exception, which, according to docs, is:

Raised if a server responds with a HTTP status code that we don’
调用接口时报错[ERROR] [1741755041.455703, 382.900000]: Error processing request: HTTPConnectionPool(host='127.0.0.1', port=1936): Read timed out. (read timeout=180) ['Traceback (most recent call last):\n', ' File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 387, in _make_request\n six.raise_from(e, None)\n', ' File "<string>", line 3, in raise_from\n', ' File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 383, in _make_request\n httplib_response = conn.getresponse()\n', ' File "/usr/lib/python3.6/http/client.py", line 1377, in getresponse\n response.begin()\n', ' File "/usr/lib/python3.6/http/client.py", line 320, in begin\n version, status, reason = self._read_status()\n', ' File "/usr/lib/python3.6/http/client.py", line 281, in _read_status\n line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")\n', ' File "/usr/lib/python3.6/socket.py", line 586, in readinto\n return self._sock.recv_into(b)\n', 'socket.timeout: timed out\n', '\nDuring handling of the above exception, another exception occurred:\n\n', 'Traceback (most recent call last):\n', ' File "/usr/lib/python3/dist-packages/requests/adapters.py", line 440, in send\n timeout=timeout\n', ' File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 639, in urlopen\n _stacktrace=sys.exc_info()[2])\n', ' File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 367, in increment\n raise six.reraise(type(error), error, _stacktrace)\n', ' File "/home/robot/.local/lib/python3.6/site-packages/six.py", line 719, in reraise\n raise value\n', ' File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 601, in urlopen\n chunked=chunked)\n', ' File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 389, in _make_request\n self._raise_timeout(err=e, url=url, timeout_value=read_timeout)\n', ' File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 309, in _raise_timeout\n raise Rea
03-13
### 解决 Python `requests` 库中的 SSLError 当使用 `requests` 发起 HTTPS 请求时,可能会遇到 SSL 错误。以下是几种有效的解决方案: #### 方法一:禁用证书验证 通过设置参数 `verify=False` 可以跳过 SSL 证书的验证过程。这适用于开发环境或测试场景,在生产环境中应谨慎使用。 ```python import requests from urllib3.exceptions import InsecureRequestWarning # 禁用警告信息 requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning) response = requests.get('https://example.com', verify=False) print(response.status_code) ``` 这种方法虽然简单直接[^3],但在实际应用中存在安全隐患,因此建议仅限于特定情况下的临时措施。 #### 方法二:安装额外的安全包 为了增强安全性并修复潜在的 SSL 问题,可以安装 `requests[security]` 扩展模块。该扩展包含了必要的安全依赖项,能够有效处理许多常见的 SSL 认证失败问题。 ```bash pip install "requests[security]" ``` 此操作将会自动下载并配置所需的组件,从而提高连接的安全性和稳定性[^1]。 #### 方法三:更新 certifi 包 有时 SSL 错误可能是由于本地 CA 证书库过期造成的。可以通过升级 `certifi` 来获取最新的受信任根证书列表。 ```bash pip install --upgrade certifi ``` 完成上述命令后重试原来的 HTTP(S) 请求即可。 #### 方法四:指定自定义CA文件路径 如果应用程序运行在一个特殊网络环境下,则可能需要提供一个可信的 CA 文件来替代默认的信任链。 ```python import os import requests ca_path = '/path/to/ca-bundle.crt' if not os.path.exists(ca_path): raise FileNotFoundError(f'Custom CA bundle does not exist at {ca_path}') response = requests.get('https://example.com', verify=ca_path) print(response.status_code) ``` 这种方式允许开发者灵活应对不同部署条件下的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值