我希望 google.appengine.ext.blobstore
和 google.appengine.api.images
在 App Engine 之外工作。这些模块是否需要 App Engine 才能工作?我想在 Google Cloud Storage 上为我的图像创建公开但不可猜测的 URL,并通过 Django 为它们提供服务。
我读到这是通过 google.appengine.ext.blobstore.create_gs_key()
和 google.appengine.api.images.get_serving_url()
完成的。这是我目前所拥有的:
from google.appengine.api import images
from google.appengine.ext import blobstore
bucketname = 'mybucket'
gcs_object_name = '/gs/mybucket/vincent-van-gogh/the-starry-night.jpg'
blob_key = blobstore.create_gs_key(gcs_object_name)
image_url = images.get_serving_url(blob_key)
并且 image_url 应该是我图片的公开但不可猜测的 URL。如果我运行这段代码,错误是
AssertionError: No api proxy found for service "blobstore"
这表明 blobstore 需要一个代理,也就是 App Engine,才能发挥其魔力。 App Engine 模块可以在 App Engine 之外工作吗?文档说上面是一种提供图像的强大方法,因为我可以为每个图像生成一个 URL,还可以动态调整图像的大小。
此策略是否有效,或者是否有更好的方法使用 Django 提供来自 Google Cloud Storage 的图像?
最佳答案
blobstore 和图像 API 仅在 App Engine 运行时环境中可用。要在计算引擎中运行它们,您可以:
在内部运行它们 Managed VMs (GCE上的GAE运行环境)
使用 GAE API 模拟器(例如 AppScale)在您自己的基础架构或 GCE 上运行它们
改用公共(public) API(例如 Google Cloud Storage)
一些 App Engine 服务(例如 Datastore)现在也公开了您可以从 GCE 使用的公共(public) API。
关于python - 如何提供谷歌云存储图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26987062/