Python上传Google Cloud Storage时偶发Connection Reset by Peer错误求助
GCS图片上传偶发ProxyError问题排查
问题描述
使用Python向Google Cloud Storage(GCS)上传图片时,约每10次操作就会出现一次错误。代码已运行数月,该错误已持续数周,因大部分图片可正常上传故延迟发现。错误日志如下:
HTTPSConnectionPool(host='storage.googleapis.com', port=443): Max retries exceeded with URL: my_url?uploadType=multipart (Caused by ProxyError('Cannot connect to proxy.', ConnectionResetError(104, 'Connection reset by peer')))
代码片段
from google.cloud import storage import cv2 import os # 注:原代码中Home、IPAddress变量未定义,需确保实际运行时已正确赋值 image = cv2.imread(imagePath) jsonCreds = f"{Home}/Config/gcp_secret.json" bucketName = os.environ.get('GCP_BUCKET') storageClient = storage.Client.from_service_account_json(jsonCreds) retval, gcpImageBuffer = cv2.imencode('.jpg',image) gcpByteArray = gcpImageBuffer.tobytes() bucket = storageClient.bucket(bucketName) # 创建GCS中的文件路径,格式为YYYY/MM/DD/<AssetID>.jpg assetID = IPAddress imageFileName = imagePath.split('/')[-1] components = imageFileName.split('_') year = components[0] month = components[1] day = components[2] hour = components[3] minute= components[4] second= components[5] gcpFilePath = "{}/{}/{}/{}_{}_{}_{}".format(year,month,day,assetID,hour,minute,second) blob = bucket.blob(gcpFilePath) blob.upload_from_string(gcpByteArray)
可能的原因分析
- 代理服务器不稳定:错误提示明确指向ProxyError,说明请求经过的代理服务器存在连接重置问题,可能是代理的并发连接限制、临时网络波动或代理服务本身的故障导致偶发断开。
- TCP连接复用问题:google-cloud-storage客户端默认会复用TCP连接,如果代理对长连接的超时设置过短,长时间复用的连接可能被代理主动重置,引发偶发错误。
- 网络环境波动:本地网络到代理服务器之间的链路存在偶发丢包或中断,导致连接被重置,尤其是在批量上传时,网络负载变化可能触发这类问题。
- 客户端重试策略不足:虽然客户端默认有重试,但针对代理连接重置这类错误的重试逻辑可能未覆盖,或者重试次数、间隔设置不合理,导致部分请求重试后仍失败。
- 代理资源限制:代理服务器的带宽、连接数达到上限,导致新的请求被拒绝或现有连接被强制断开,出现偶发的连接重置。
内容的提问来源于stack exchange,提问作者MattieG4
相关产品推荐
相关产品推荐

