使用ImgurPython上传时突发SSL协议错误的排查求助
ImgurPython批量上传功能突发SSL错误排查求助
我开发了一个基于ImgurPython库的批量相册上传应用,用来替代网页UI完成重复上传操作。该应用稳定运行数周后,近期上传功能突然失效,但其他API调用(如查询额度、查看相册内容、创建相册)均能正常执行。本地未做任何代码或环境变更,尝试多种排查手段仍未定位故障原因。
命令行复现故障及错误日志
>>> import os, sys, re, time >>> from imgurpython import ImgurClient >>> sys.version '3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)]' >>> client_id = "..." >>> client_secret = "..." >>> access_token = "..." >>> refresh_token = "..." >>> client = ImgurClient(client_id, client_secret, access_token, refresh_token) >>> client.get_credits() {'UserLimit': 500, 'UserRemaining': 500, 'UserReset': 1712002684, 'ClientLimit': 12500, 'ClientRemaining': 12499} >>> fpath = '...' >>> fd = open(fpath, 'rb') >>> res = client.upload(fd, anon=False) urllib3.exceptions.SSLError: EOF occurred in violation of protocol (_ssl.c:2406) The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\MyUserName\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\adapters.py", line 486, in send resp = conn.urlopen( ^^^^^^^^^^^^^ File "C:\Users\MyUserName\AppData\Local\Programs\Python\Python312\Lib\site-packages\urllib3\connectionpool.py", line 847, in urlopen retries = retries.increment( ^^^^^^^^^^^^^^^^^^ File "C:\Users\MyUserName\AppData\Local\Programs\Python\Python312\Lib\site-packages\urllib3\util\retry.py", line 515, in increment raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.imgur.com', port=443): Max retries exceeded with url: /3/upload (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:2406)'))) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\MyUserName\AppData\Local\Programs\Python\Python312\Lib\site-packages\imgurpython-1.1.7-py3.12.egg\imgurpython\client.py", line 598, in upload File "C:\Users\MyUserName\AppData\Local\Programs\Python\Python312\Lib\site-packages\imgurpython-1.1.7-py3.12.egg\imgurpython\client.py", line 133, in make_request File "C:\Users\MyUserName\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\api.py", line 115, in post return request("post", url, data=data, json=json, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\MyUserName\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\api.py", line 59, in request return session.request(method=method, url=url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\MyUserName\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\sessions.py", line 589, in request resp = self.send(prep, **send_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\MyUserName\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\sessions.py", line 703, in send r = adapter.send(request, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\MyUserName\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\adapters.py", line 517, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='api.imgur.com', port=443): Max retries exceeded with url: /3/upload (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:2406)')))
已排除的可能原因
- 未超出API使用额度:查询
get_credits()显示额度充足 - 故障不针对特定文件:测试文件为之前上传成功的文件
- 网络环境无影响:切换或关闭VPN后问题依旧
- 时间周期无影响:等待多日及新月份到来后故障未消失
- 应用凭证无问题:更换新的应用ID/密钥后问题仍存在
查阅相关问题未找到完全匹配的案例,部分建议使用requests会话,但ImgurPython已采用该方式,现求助解决该上传SSL错误问题。
内容的提问来源于stack exchange,提问作者Amanadiel
相关产品推荐
相关产品推荐

