【发布时间】:2015-01-15 05:07:04
【问题描述】:
我希望 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 的图像?
【问题讨论】:
-
那行不通。先决条件:“您需要有一个 appengine 项目。对于非 appengine django 项目,这不能作为独立的解决方案,因为没有实现谷歌云存储的身份验证机制。”
-
我没有 App Engine 项目,也不想要。我在 Google Compute Engine 上有一个独立的 Django 项目。
-
您可以直接从存储桶中提供您的图像,只需使其世界可读。您必须使用 App Engine 才能使用 App Engine 组件,例如 blobstore、get_serving URL afaik。
-
你是对的。我现在正在研究适用于 Python 的 Google API 客户端库。
标签: python django google-app-engine google-cloud-storage blobstore