python - 如何提供谷歌云存储图像?

标签 python django google-app-engine google-cloud-storage blobstore

我希望 google.appengine.ext.blobstoregoogle.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/

相关文章:

python - 将 request.path 与 Django 模板中的反向 url 进行比较

google-app-engine - 如何使用结构数组实现 google datastore propertyloadsaver

google-app-engine - 预计 GAE/NDB 的响应时间是多少?

python - Pyinstaller 不能与线程一起正常工作

python - 基本的 encrypt() 和 decrypt() 函数

python - 如何在 Django 管理界面中显示向后引用的模型实例?

python - Google App Engine + 表单验证

python - Django:是否需要扩展 AbstractBaseUser 以将电子邮件用作 USERNAME_FIELD?

google-app-engine - Google App Engine 的测试台 stub 'search'

python - 将 Python 数据类型复制到 Postgres