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

应用引擎到GCS |上载问题

苏波涛
2023-03-14

我有一些文件是从Evernote API接收的(通过getResources),并使用以下代码写入Google Cloud Storage:

gcs_file = gcs.open(filename, 'w', content_type=res.mime,
                    retry_params=write_retry_params)

# Retrieve the binary data and write to GCS
resource_file = note_store.getResource(res.guid, True, False, False, False)
gcs_file.write(resource_file.data.body)

gcs_file.close()

即使对于某些类型的文档,它仍然有效。但GCS在日志中记录了某些文件:

Unable to fetch URL: https://storage.googleapis.com/evernoteresources/5db799f1-c03c-4056-812a-6d77bad55261/Sleep Away.mp3

Got exception while contacting GCS. Will retry in 0.11 seconds.

这些错误似乎没有任何模式。它发生在文档、声音、图片等任何类型的文档中,其中一些文档类型有效,而另一些文档类型无效。这与大小无关(因为一些小文档和一些大文档都有效)。

有什么想法吗?

这是完整的堆栈跟踪,尽管我不确定它是否会有帮助。

Encountered unexpected error from ProtoRPC method implementation: TimeoutError (('Request to Google Cloud Storage timed out.', DownloadError('Unable to fetch URL: https://storage.googleapis.com/evernoteresources/78413585-2266-4426-b08c-71d6c224f266/Evernote Snapshot 20130512 124546.jpg',)))
Traceback (most recent call last):
  File "/python27_runtime/python27_lib/versions/1/protorpc/wsgi/service.py", line 181, in protorpc_service_app
    response = method(instance, request)
  File "/python27_runtime/python27_lib/versions/1/google/appengine/ext/endpoints/api_config.py", line 972, in invoke_remote
    return remote_method(service_instance, request)
  File "/python27_runtime/python27_lib/versions/1/protorpc/remote.py", line 412, in invoke_remote_method
    response = method(service_instance, request)
  File "/base/data/home/apps/s~quinector/2a.368528733040360018/endpoints.py", line 61, in get_note_details
    url = tools.registerResource(note_store, req.note_guid, r)
  File "/base/data/home/apps/s~quinector/2a.368528733040360018/GlobalUtilities.py", line 109, in registerResource
    retry_params=write_retry_params)
  File "/base/data/home/apps/s~quinector/2a.368528733040360018/cloudstorage/cloudstorage_api.py", line 69, in open
    return storage_api.StreamingBuffer(api, filename, content_type, options)
  File "/base/data/home/apps/s~quinector/2a.368528733040360018/cloudstorage/storage_api.py", line 526, in __init__
    status, headers, _ = self._api.post_object(path, headers=headers)
  File "/base/data/home/apps/s~quinector/2a.368528733040360018/cloudstorage/rest_api.py", line 41, in sync_wrapper
    return future.get_result()
  File "/python27_runtime/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 325, in get_result
    self.check_success()
  File "/python27_runtime/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 368, in _help_tasklet_along
    value = gen.throw(exc.__class__, exc, tb)
  File "/base/data/home/apps/s~quinector/2a.368528733040360018/cloudstorage/storage_api.py", line 84, in do_request_async
    'Request to Google Cloud Storage timed out.', e)
TimeoutError: ('Request to Google Cloud Storage timed out.', DownloadError('Unable to fetch URL: https://storage.googleapis.com/evernoteresources/78413585-2266-4426-b08c-71d6c224f266/Evernote Snapshot 20130512 124546.jpg',))

共有2个答案

段干玺
2023-03-14

谢谢你,布莱恩!问题是文件名中的空格。我刚刚使用了urllib2。quote()将它们从那里取出,它就像一个符咒。

充星腾
2023-03-14

这是gcs客户端代码中的一个错误。它应该正确处理文件名。它向GCS使用http请求的事实应该是“隐藏的”。这将很快修复。谢谢

注意:如果您自己引用文件名来解决此错误,则在修复后文件名将被双引号引用。很抱歉

 类似资料:
  • 我是GCS的新手。 这里我写了几行。 现在棘手的部分是按原样下载此数据<代码>Ex.new\u文件。csv 有人解决过吗?如果那样的话,我会很感激的。 谢谢

  • 我正在上传。要存储的java servlet。jpg至地面军事系统。 我使用GCS客户端库而不是Google云存储API。但我没有找到任何上传照片的示例(doPost方法),所以我的代码不起作用。。。 发送成功(我可以在GCS上看到大小为465.24KB的照片),但当我尝试查看这张照片时,我无法: 这是我的代码: 上载java servlet public void doPost(HttpServ

  • 我在google app engine上遇到了fopen()的问题。正常工作3-4次,比服务器的响应时间长。 信息:fopen(https://website_url/image_name.png):无法打开流:连接已关闭。 知道怎么排除故障吗? PHP ini有

  • 我是谷歌应用引擎服务的新手。我有一个JavaMaven项目,其中一个模块运行在应用引擎flex上,另一个模块运行在应用引擎标准上。我正在为应用引擎Flex API使用JWT身份验证。我想从应用引擎标准向应用引擎Flex发出发布请求。验证服务的最佳方式应该是什么? 此外,我还有一个cron服务,它可以访问我用于某些后端内容的特定URL。如何验证请求是否仅来自Cron服务?

  • 我正在尝试使用一个appengine项目中的javaapi创建一个GCS bucket。 我得到以下错误,没有更多的进一步信息。 403 FORBIDDEN{"代码": 403,"错误": [ { "域":"全局","消息":"禁止","原因":"禁止" } ], "消息":"禁止"} 根据在互联网上的阅读,我已经检查了以下内容 启用计费-完成。。启用GoogleCloudStorage API-

  • 我正在使用此代码上传文件 `const url=“https://storage.googleapis.com//file.png.png?x-goog-algorithm=goog4-rsa-sha256&x-goog-credential=gitlab-ci%.iam.gserviceaccount.com%2f20200521%2fauto%2fstorage%2fgoog4_request