1

这是参考:https ://developers.google.com/appengine/docs/python/blobstore/functions#create_gs_key

当您将文件上传到 BlobstoreUploadHandler 时,blob_info 中存储了一个 blob_key,我在 180 分钟后使用带有 images.Image(blob_key=blob_key) 的 blob_key 进行了测试,它仍然有效。

但是文档指出,来自 create_gs_key 的 blob_key 具有 60 分钟的 access_token。

我不确定这意味着什么以及 access_token 的用途,文档还指出 blob_key 可以安全存储,我也不确定“存储安全”是什么。

那么 GCS 实体的 blob_key 可以无限期使用吗?

4

1 回答 1

1

查看源代码:

def create_gs_key(filename, rpc=None):
  """Create an encoded key for a Google Storage file.

  The created blob key will include short lived access token using the
  application's service account for authorization.

  This blob key should not be stored permanently as the access token will
  expire.

  Args:
    filename: The filename of the google storage object to create the key for.
    rpc: Optional UserRPC object.

  Returns:
    An encrypted blob key object that also contains a short term access token
      that represents the application's service account.
  """
  rpc = create_gs_key_async(filename, rpc)
  return rpc.get_result()

这与文档所说的相矛盾:

您可以安全地保存此函数生成的 blob 密钥,就像您可以在 Blobstore API 中保存普通的 blob 密钥一样。

我的建议是,由于您正在使用该create_gs_key功能,因此您已经知道所需的文件名。因此,BlobKey每次您想与相关文件交互时,存储此值以生成与 BlobStore API 一起使用的值(例如getdelete

更新:提交了 一个错误报告来修复文档。

于 2013-08-08T13:45:00.473 回答