如何解决Google App Engine不支持编写文件的问题?

时间:2012-08-21 17:02:53

标签: google-app-engine

我有一个GAE / Python应用程序,它是一个管理程序,允许世界各地的人们将大型GAE应用程序的模板文件翻译成他们的本地语言(我们不能使用自动翻译,因为涉及许多成语等) 。模板文件已被标记化,各种语言的文本片段存储在GAE数据存储区中(涉及数千个模板文件)。

因此,我需要能够将文件写入文件夹。

我有以下代码:

with open("my_new_file.html", "wb") as fh:
    fh.write(output)

我已经读过GAE会阻止文件的写入。如果这是真的,有没有办法解决它?

如果我不能直接写文件,是否有人建议我如何完成相同的事情(例如,做一些网络服务,进行某种往返下载然后上传文件)?

我是GAE / Python的新手,所以请具体说明。

感谢您的任何建议。

3 个答案:

答案 0 :(得分:2)

您可以在数据存储区中使用Google App引擎blobstore或BlobProperty来存储blob /文件

使用blobstore(最大2GB) https://developers.google.com/appengine/docs/python/blobstore/

使用数据存储区blob(最多1MB) https://developers.google.com/appengine/docs/python/datastore/typesandpropertyclasses#Blob

答案 1 :(得分:0)

文件系统只在许多云系统中读取,GAE也是如此。在虚拟世界中,操作系统和机器是虚拟的,文件系统是存储任何东西的最不可靠的地方

我建议使用任何BLOB,Google云端存储,Google云端硬盘,甚至可以进一步存储并存储在任何外部提供商(如Amazon S3等)中。

答案 2 :(得分:0)

使用文件API: https://developers.google.com/appengine/docs/python/googlestorage/overview

添加一些额外的代码,您可以像普通的Python文件API一样使用它:

with files.open(writable_file_name, 'a') as f:
  f.write('Hello World!')

虽然此特定链接与Google云端存储(GCS)相关,但您可以轻松替换特定于GCS的部分,并将blobstore用作存储后端。

代码可以在这里找到: http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/files/