如何从本地服务器提供谷歌云存储图像?

时间:2014-12-21 23:15:35

标签: google-app-engine google-cloud-storage blobstore

使用最新的GAE SDK(1.9.17),我遵循了使用blobstore和图像库提供google云存储映像的所有说明,但在本地它却给我一个500错误。将应用程序部署到生产服务器,提供图像可以正常工作。然而,这非常烦人,因为我需要在本地开发,我的项目是图像密集型。

这在生产中很好用:

key = blobstore.create_gs_key('/gs/my_bucket/my_folder/my_image.jpg')
url = images.get_serving_url(key)

在制作时,服务网址如下:

http://lh6.ggpht.com/ow6Z3PrYyLVdvRDc9cT9I3MB9ug...

在本地,网址如下:

http://0.0.0.0:8080/_ah/img/encoded_gs_file:Z2lmdF9p...

App Engine错误日志说:

  

ERROR 2014-12-21 23:12:35,256 blob_download.py:204]找不到   blob与关键   encoded_gs_file:Z2lmdF9p ...

我做错了吗?文档说在本地提供图像应该在SDK 1.8之后正常工作。如果我不能让它工作,我唯一的解决方案是保留本地托管的所有生产图像(许多GB)用于开发。

1 个答案:

答案 0 :(得分:3)

请参阅this very good repo,其中介绍了如何在开发SDK或生产环境中将文件保存到GCS中。

具体来说,对于你的问题:

   # image API supported formats
    if file_extension in ['jpeg', 'jpg', 'png', 'gif', 'bmp', 'tiff', 'ico']:
        # High-performance dynamic image serving
        self.serving_url = images.get_serving_url(self.blobkey, secure_url=True)
    elif os.environ['SERVER_SOFTWARE'].startswith('Development'):
        # GCS url: this SDK feature has not been documented yet !!!
        self.serving_url = '/_ah/gcs%s' % self.gcs_filename
    else:
        # GCS url: because of HTTPS we cannot use a cname redirect or use the use_blobstore option
        self.serving_url = 'https://storage.googleapis.com%s' % self.gcs_filename

感谢@voscausa