我想google.appengine.ext.blobstore和google.appengine.api.images到App Engine的工作之外。这些模块是否需要App Engine才能正常运行?我想在Google Cloud Storage上为图像创建公共的但不可猜测的URL,并通过Django提供它们。
google.appengine.ext.blobstore
google.appengine.api.images
我了解到这是通过google.appengine.ext.blobstore.create_gs_key()和完成的google.appengine.api.images.get_serving_url()。这是我到目前为止所拥有的:
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运行时环境中可用。要在计算引擎中运行它们,您可以:
在受管VM中运行它们(GCE上的GAE运行时环境)
使用GAE API仿真器(例如AppScale)在您自己的基础架构或GCE上运行它们
改用公共API(例如Google Cloud Storage)
现在,某些App Engine服务(例如Datastore)还公开了可以从GCE使用的公共API。