我希望google.appengine.ext.blobstore
和google.appengine.api.images
在App Engine之外工作。这些模块是否需要App Engine才能工作?我想在Google云端存储上创建公开但不可猜测的图片网址,并通过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应该是我公共图片的公开但不可猜测的网址。如果我运行此代码,则错误为
AssertionError: No api proxy found for service "blobstore"
这表明blobstore需要一个代理,即App Engine,才能发挥其魔力。 App Engine模块可以在App Engine之外工作吗?文档说上面是一种强大的图像提供方式,因为我可以为每个图像生成一个URL,并动态调整图像大小。
此策略是否有效或是否有更好的方式通过Django从Google云端存储中提供图像?
答案 0 :(得分:4)
blobstore和images API仅在App Engine运行时环境中可用。要在计算引擎中运行它们,您可以:
在Managed VMs(GCE上的GAE运行时环境)中运行它们
使用GAE API模拟器(例如AppScale)
使用公共API(例如Google云端存储)代替
某些App Engine服务(例如Datastore)现在也公开了可以从GCE中使用的公共API。