我有一项任务,我想使用App Engine的cron作业调度程序启动。为了构建此任务的处理程序,我一直在寻找一个App Engine article来描述如何使用deferred
来确保长时间运行的任务不会超时。
请注意,本文讨论了更新模型实体的上下文中的延迟。但是,我想用它来连续写入将托管在Google云端存储(GCS)上的文件。
为了弥补这一点,我原本想要传递我正在使用的文件流而不是文件中的Cursor
定义中的UpdateSchema
对象。但是,在生产中(写入10k +条目),我想这个文件/文件流太大而无法传递。
因此,我想知道编写文件的一部分,将其保存到GCS,然后在deffered再次运行,写入,保存等等时检索它是否更好? - 或完全做其他事情。我不太确定通常会做什么来完成像这样的App Engine任务(即输入位置是数据存储区,但输出位置在其他地方)。
编辑:如果它有所作为,我正在使用Python
答案 0 :(得分:0)
我怀疑文件流将在您的下一个任务获取之前关闭,并且它将无效。
您当然可以执行以下操作:
请注意,您无法附加到GCS中的文件,因此您必须读入整个文件,然后重写它。
如果您的文件很大,最好还是存储较小的文件并提出合适的命名方案,例如为文件名添加索引。