【发布时间】:2015-08-01 07:49:51
【问题描述】:
我昨天收到 Google 的一条消息,说 Files API 将于 7 月 28 日停用,建议迁移到 Google Cloud Storage。
目前我通过以下方式使用 Files API - 收到电子邮件后,我将其附件(仅限图像)保存到 blobstore -
from google.appengine.api import files
bs_file = files.blobstore.create(mime_type=ctype, _blobinfo_uploaded_filename='screenshot_'+image_file_name)
try:
with files.open(bs_file, 'a') as f:
f.write(image_file)
files.finalize(bs_file)
blob_key = files.blobstore.get_blob_key(bs_file)
稍后,我访问 blobstore 并将相同的图像附加到我发送的另一封邮件中:
attachments = []
for at_blob_key in message.attachments:
blob_reader = blobstore.BlobReader(at_blob_key)
blob_info = blobstore.BlobInfo.get(at_blob_key)
if blob_reader and blob_info:
filename = blob_info.filename
attachments.append((filename, blob_reader.read()))
if len(attachments) > 0:
email.attachments = attachments
email.send()
现在,我应该使用 Google Cloud Storage 而不是 Blobstore。谷歌云存储不是免费的,所以我必须启用计费。目前我的 Blobstore 存储数据是 0.27Gb,很小,所以看起来我不需要支付很多费用。但我害怕启用计费,因为我的代码的其他一些部分可能会导致巨额账单(而且似乎没有办法仅为 Google Cloud Storage 启用计费)。
那么,在我的情况下,有什么方法可以继续使用 Blobstore 进行文件存储?除了 Google Cloud Storage(Google Drive 是什么),我还能免费使用什么?
【问题讨论】:
-
您将能够使用 blobstore 但不能使用文件 API。至少我是这样理解的。因此,您可以更改为使用具有
blobstore.BlobReferenceProperty()的类并像这样保存它。 -
@Niklasinstockholm,接下来的问题是如何将文件保存到 blobstore(目前使用 Files API 完成)。
-
顺便说一句,通过启用计费,您不会收到“巨额账单”。您的应用已经符合免费配额,因此免费部件将保持免费,您只需为额外服务付费
-
@IgorArtamonov,部分同意,但随着用户活动的增加,代码中进行了一些更改,一旦启用计费,我可能会收到巨额账单(我现在无法收到,因为 Over Quota 例外发生了,就是这样)。
-
启用结算后,您可以设置最高每日预算。将其设置为 1 美元,它足够接近释放,您不必担心它。
标签: google-app-engine google-cloud-storage blobstore