You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:20:37