当前位置: 首页 > 知识库问答 >
问题:

无法上传>~2GB到谷歌云存储

宗政博文
2023-03-14

追踪下面。

相关的Python片段:

bucket = _get_bucket(location['bucket'])
blob = bucket.blob(location['path'])
blob.upload_from_filename(source_path)

最终触发(从ssl库):

溢出错误:字符串长度超过2147483647字节

我想我缺少一些特殊的配置选项?

这可能与这名1.5岁的年轻人有关,显然他还没有解决问题:https://github.com/googledatalab/datalab/issues/784.

谢谢你的帮助!

完整跟踪:

[File”/usr/src/app/gcloud/download_data.py“,第109行,在******blob.upload_文件名(源路径)中

文件“/usr/local/lib/python3.5/dist-packages/google/cloud/storage/blob.py”,第992行,在upload\u from\u文件名大小=总字节数)

文件“/usr/local/lib/python3.5/dist-packages/google/cloud/storage/blob.py”,第946行,上传自文件客户端,文件对象,内容类型,大小,重试次数)

文件“/usr/local/lib/python3.5/dist-packages/google/cloud/storage/blob.py”,第867行,输入上传客户端、流、内容类型、大小、重试次数)

文件“/usr/local/lib/python3.5/dist packages/google/cloud/storage/blob.py”,第700行,多部分上传传输,数据,对象元数据,内容类型)

文件“/usr/local/lib/python3.5/dist packages/google/resumable\u media/requests/upload.py”,第97行,传输重试策略=self.\u重试策略)

文件“/usr/local/lib/python3.5/dist packages/google/resumable\u media/requests/\u helpers.py”,第101行,http\u request func,RequestsMixin.\u获取状态代码,重试策略)

文件“/usr/local/lib/python3.5/dist packages/google/resumable\u media/\u helpers.py”,第146行,在wait\u和\u retry response=func()中

文件“/usr/local/lib/python3.5/dist packages/google/auth/transport/requests.py”,第186行,在请求方法中,url,data=data,headers=request\u headers,**kwargs)

文件“/usr/local/lib/python3.5/dist-packages/requests/sessions.py”,第508行,在request resp=self.send(prep,**send_-kwargs)中

文件“/usr/local/lib/python3.5/dist-packages/requests/sessions.py”,第618行,在send r=adapter.send(request,**kwargs)中

文件“/usr/local/lib/python3.5/dist-packages/requests/adapters.py”,第440行,发送超时=超时

文件“/usr/local/lib/python3.5/dist packages/urllib3/connectionpool.py”,第601行,urlopen chunked=chunked)

文件“/usr/local/lib/python3.5/dist packages/urllib3/connectionpool.py”,第357行,在请求conn.request中(方法,url,**httplib\u请求)

文件“/usr/lib/python3.5/http/client.py”,第1106行,请求self.\u send.\u请求(方法、url、正文、标题)

文件“/usr/lib/python3.5/http/client.py”,第1151行,在发送请求self.endheaders(body)中

文件"/usr/lib/python3.5/超文本传输协议/client.py",第1102行,在结束标题中。_send_output(message_body)

文件“/usr/lib/python3.5/http/client.py”,第936行,在发送输出self.send(消息体)中

文件"/usr/lib/python3.5/超文本传输协议/client.py",第908行,发送self.sock.sendall(数据)

sendall v=self.send中的文件“/usr/lib/python3.5/ssl.py”,第891行(数据[计数:)

文件“/usr/lib/python3.5/ssl.py”,第861行,在发送返回self.\u sslobj.write(数据)中

文件"/usr/lib/python3.5/ssl.py",第586行,写回车。_sslobj.write(数据)

溢出错误:字符串长度超过2147483647字节

共有1个答案

那谦
2023-03-14

问题是它正试图将整个文件读入内存。按照upload\u from\u filename的链接显示它stats文件,然后将其作为上载大小作为单个上载部分传入。

相反,在创建对象时指定chunk\u size将触发它以多个部分进行上载:

# Must be a multiple of 256KB per docstring    
CHUNK_SIZE = 10485760  # 10MB
blob = bucket.blob(location['path'], chunk_size=CHUNK_SIZE)

快乐的黑客!

 类似资料:
  • 我应该做什么才能成功上传图片?任何帮助都将不胜感激。 非常感谢。

  • 我想按照官方文档中提供的示例将一个文件上传到Google云存储 然而,我得到了一个错误: 线程“main”com.google.cloud.storage.StorageException中的异常:获取服务帐户的访问令牌时出错:400个错误请求{“错误”:“无效的授予”、“错误描述”:“无效的JWT:令牌必须是短期令牌(60分钟)并且在合理的时间范围内。请检查JWT声明中的iat和exp值。”位于

  • 我们一直在使用服务,在(AWS)中,我们意外删除了一个目录,因此我们认为它应该在中,但是经过查看,尽管处于打开状态,但它并不存在。

  • 我正在尝试使用谷歌云存储JSON API将图像上传到谷歌云存储桶中。文件正在上载,但没有显示任何内容。 我正在通过以下方式上载图像:- 图像1 看图片1,文件上传成功。但当我点击它查看它时,它显示如图2所示。 图像2

  • 在谷歌云存储中,我在名为图像的根桶中有一个名为猫的桶。我正在使用google-api-ruby-Client gem上传文件。我可以将文件上传到根桶“图像”,但上传到“图像/猫”不起作用。我知道谷歌云存储中的存储桶没有斜杠的概念,所以我无法弄清楚如何指定嵌套存储桶的名称。 这给出了nil:NilClass的错误

  • 我试图上传图像文件到我在GCS的桶中,只在我的页面上插入了一个文件输入和一个按钮进行测试,当我点击按钮时,它没有做任何事情,没有错误,什么都没有。我在谷歌云平台计算引擎中使用的是Ubuntu VM。实际上,我无法使用谷歌云存储客户端做任何事情,无法上传对象、列出对象、列出存储桶,我已经将它上传到我的网站,但它不工作,首先在localhost上尝试,但它给了我这个错误:cURL错误60: SSL证书