首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >get_serving_url /镜像应用编程接口的TransformationError原因

get_serving_url /镜像应用编程接口的TransformationError原因
EN

Stack Overflow用户
提问于 2017-12-08 05:17:16
回答 1查看 500关注 0票数 1

为了从我的存储桶中提供图像,我在使用get_serving_url时遇到了以下错误。

代码语言:javascript
运行
复制
Traceback (most recent call last):
 File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 570, in dispatch
   return method(*args, **kwargs)
 File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 1087, in synctasklet_wrapper
   return taskletfunc(*args, **kwds).get_result()
 File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/tasklets.py", line 1057, in tasklet_wrapper
   result = func(*args, **kwds)
 File "/base/data/home/apps/e~tileserve20171207t210519.406056180994857717/blob_upload.py", line 70, in post
   bf.put_async()
 File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/ndb/model.py", line 3473, in _put_async
   self._pre_put_hook()
 File "/base/data/home/apps/e~tileserve/20171207t210519.406056180994857717/blob_files.py", line 124, in _pre_put_hook
   print images.get_serving_url(None, filename='/gs' + '/tileserve.appspot.com/user2test4test4RGB20170927.tif')
 File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/images/__init__.py", line 1868, in get_serving_url
   return rpc.get_result()
 File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result
   return self.__get_result_hook(self)
 File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/images/__init__.py", line 1972, in get_serving_url_hook
   raise _ToImagesError(e, readable_blob_key)
 TransformationError

当我将图像上传到我的存储桶中时,它可以工作,但当我通过处理创建图像时,应该通过get_serving_url公开,我得到的是TransformationError。

我尝试了两种用于提供图像的变体:

代码语言:javascript
运行
复制
test = blobstore.create_gs_key('/gs' + '/path2object')
images.get_serving_url(test, secure_url=True)

images.get_serving_url(None, filename='/gs' + '/' + <bucket name>+  '/'+ <object name>)

我还设置了存储桶对象ACM权限和IAM App Engine应用程序默认服务帐户权限(storage admin)。这两种变体都没有改变任何内容,但对于访问存储桶的对象都很重要。

有人遇到过这个问题吗?可能的错误是什么?我不明白为什么当我上传图像时,它会起作用,但对于通过处理生成的图像,它却不起作用。

EN

回答 1

Stack Overflow用户

发布于 2017-12-09 00:03:12

回溯提示您可能正在尝试调用images.get_serving_url(),而异步操作可能仍在进行中。

如果该操作实际上是在GCS中保存转换后的图像,那么它可以解释失败:get_serving_url()包括检查文件是否为有效图像,如果文件尚未保存,则使用TransformationError将失败。

如果是这样-您可以通过以下任一方法解决此问题:

  • 切换到保存图像的同步版本,直到保存图像完成(如果您同时有其他事情要做)-在调用get_serving_url()
  • repeatedly way get_serving_url()之前获得同步调用的结果,同时捕获TransformationError,直到它不再以这种方式失败。这有点风险,因为如果引发TransformationError的原因不是简单地保存图像不完整,则可能会导致无限循环。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47703942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档