使用App Engine延迟写入文件

时间:2016-02-01 22:39:15

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

我有一项任务,我想使用App Engine的cron作业调度程序启动。为了构建此任务的处理程序,我一直在寻找一个App Engine article来描述如何使用deferred来确保长时间运行的任务不会超时。

请注意,本文讨论了更新模型实体的上下文中的延迟。但是,我想用它来连续写入将托管在Google云端存储(GCS)上的文件。

为了弥补这一点,我原本想要传递我正在使用的文件流而不是文件中的Cursor定义中的UpdateSchema对象。但是,在生产中(写入10k +条目),我想这个文件/文件流太大而无法传递。

因此,我想知道编写文件的一部分,将其保存到GCS,然后在deffered再次运行,写入,保存等等时检索它是否更好? - 或完全做其他事情。我不太确定通常会做什么来完成像这样的App Engine任务(即输入位置是数据存储区,但输出位置在其他地方)。

编辑:如果它有所作为,我正在使用Python

1 个答案:

答案 0 :(得分:0)

我怀疑文件流将在您的下一个任务获取之前关闭,并且它将无效。

您当然可以执行以下操作:

  1. 将GCS文件名传递给任务
  2. 读入整个文件。
  3. 创建一个新文件,其中包含旧数据和您要添加的任何新数据。
  4. 请注意,您无法附加到GCS中的文件,因此您必须读入整个文件,然后重写它。

    如果您的文件很大,最好还是存储较小的文件并提出合适的命名方案,例如为文件名添加索引。