通过内存探查器
检测内存泄漏。既然如此大的文件将从
128MB
GCF或f1 micro
GCE上传,我如何防止内存泄漏?
✗ python -m memory_profiler tests/test_gcp_storage.py
67108864
Filename: tests/test_gcp_storage.py
Line # Mem usage Increment Line Contents
================================================
48 35.586 MiB 35.586 MiB @profile
49 def test_upload_big_file():
50 35.586 MiB 0.000 MiB from google.cloud import storage
51 35.609 MiB 0.023 MiB client = storage.Client()
52
53 35.609 MiB 0.000 MiB m_bytes = 64
54 35.609 MiB 0.000 MiB filename = int(datetime.utcnow().timestamp())
55 35.609 MiB 0.000 MiB blob_name = f'test/{filename}'
56 35.609 MiB 0.000 MiB bucket_name = 'my_bucket'
57 38.613 MiB 3.004 MiB bucket = client.get_bucket(bucket_name)
58
59 38.613 MiB 0.000 MiB with open(f'/tmp/{filename}', 'wb+') as file_obj:
60 38.613 MiB 0.000 MiB file_obj.seek(m_bytes * 1024 * 1024 - 1)
61 38.613 MiB 0.000 MiB file_obj.write(b'\0')
62 38.613 MiB 0.000 MiB file_obj.seek(0)
63
64 38.613 MiB 0.000 MiB blob = bucket.blob(blob_name)
65 102.707 MiB 64.094 MiB blob.upload_from_file(file_obj)
66
67 102.715 MiB 0.008 MiB blob = bucket.get_blob(blob_name)
68 102.719 MiB 0.004 MiB print(blob.size)
此外,如果文件未以二进制模式打开,内存泄漏将是文件大小的两倍。
67108864
Filename: tests/test_gcp_storage.py
Line # Mem usage Increment Line Contents
================================================
48 35.410 MiB 35.410 MiB @profile
49 def test_upload_big_file():
50 35.410 MiB 0.000 MiB from google.cloud import storage
51 35.441 MiB 0.031 MiB client = storage.Client()
52
53 35.441 MiB 0.000 MiB m_bytes = 64
54 35.441 MiB 0.000 MiB filename = int(datetime.utcnow().timestamp())
55 35.441 MiB 0.000 MiB blob_name = f'test/{filename}'
56 35.441 MiB 0.000 MiB bucket_name = 'my_bucket'
57 38.512 MiB 3.070 MiB bucket = client.get_bucket(bucket_name)
58
59 38.512 MiB 0.000 MiB with open(f'/tmp/{filename}', 'w+') as file_obj:
60 38.512 MiB 0.000 MiB file_obj.seek(m_bytes * 1024 * 1024 - 1)
61 38.512 MiB 0.000 MiB file_obj.write('\0')
62 38.512 MiB 0.000 MiB file_obj.seek(0)
63
64 38.512 MiB 0.000 MiB blob = bucket.blob(blob_name)
65 152.250 MiB 113.738 MiB blob.upload_from_file(file_obj)
66
67 152.699 MiB 0.449 MiB blob = bucket.get_blob(blob_name)
68 152.703 MiB 0.004 MiB print(blob.size)
主旨:https://gist.github.com/northtree/8b560a6b552a975640ec406c9f701731
要限制上载过程中使用的内存量,您需要在调用upload\u from\u file()
之前在blob上显式配置块大小:
blob = bucket.blob(blob_name, chunk_size=10*1024*1024)
blob.upload_from_file(file_obj)
我同意这是谷歌客户端软件开发工具包的不良默认行为,而且这种解决方案也没有得到很好的记录。
我想按照官方文档中提供的示例将一个文件上传到Google云存储 然而,我得到了一个错误: 线程“main”com.google.cloud.storage.StorageException中的异常:获取服务帐户的访问令牌时出错:400个错误请求{“错误”:“无效的授予”、“错误描述”:“无效的JWT:令牌必须是短期令牌(60分钟)并且在合理的时间范围内。请检查JWT声明中的iat和exp值。”位于
我目前面临的问题与谷歌云存储, 我能够下载对象上传到谷歌云存储,但当天晚些时候,我开始得到的错误,因为"这个网站无法到达" 我在c#中以编程方式创建了一个bucket,代码如下: 因此,创建存储桶的设置如下: 默认存储类别:多地区 位置:美国(美国多个地区) 公共访问:每个对象 生命周期:无 访问控制模型:存储桶策略
我正在考虑是否可以在Windows平台上使用gsutil的命令将文件上传到Google云存储。我在本地电脑上有6个文件夹,每天都有新的pdf文档添加到其中。每个文件夹包含大约2500个文件。所有文件目前都在谷歌存储在各自的文件夹中。现在我主要使用谷歌云存储管理器上传所有的新文件。有没有办法创建一个批处理文件,并安排每天晚上自动运行它,这样它就只抓取今天扫描过的文件,并将其上传到谷歌存储?
我正在尝试使用谷歌云存储JSON API将图像上传到谷歌云存储桶中。文件正在上载,但没有显示任何内容。 我正在通过以下方式上载图像:- 图像1 看图片1,文件上传成功。但当我点击它查看它时,它显示如图2所示。 图像2
我应该做什么才能成功上传图片?任何帮助都将不胜感激。 非常感谢。
我正在尝试上传文件到谷歌存储在多块但签名的URL。 以下是我正在执行的步骤: 使用node.js创建可恢复的上载URL 示例URL: 使用这些标头: HTTPS响应: 使用这些标头: HTTPS响应:包含数据: 根据文档,上述响应应该是,而不是。 我对这些API调用做错了什么?