如何使用Pull Queue任务续订租约?

时间:2018-02-16 16:01:45

标签: google-app-engine

我有一些长期存在的任务可能需要一周以上的工作才能完成(部分管道只能在一天中的某些时段工作)。

更新租约似乎是正确的方法,因为目前的最大租约长度为1周。在一个overview doc中简要提到了更新租约,但我没有找到任何其他文档来说明如何使用它。

还有一些其他的倾向引用 - taskqueue module文档有一个例外,当你尝试并且无法续订租约时会发生这种情况......但是没有更新租约的方法。 migrating to Cloud Tasks上的文档提到了task.renewLease方法,但表示它不适用于使用内置GAE TaskQueue支持的人。

1 个答案:

答案 0 :(得分:4)

我只使用过推送队列,但modify_task_lease()可能会做你需要的: https://cloud.google.com/appengine/docs/standard/python/refdocs/google.appengine.api.taskqueue#google.appengine.api.taskqueue.Queue.modify_task_lease

这里讨论过:https://cloud.google.com/appengine/docs/standard/python/taskqueue/pull/leasing-pull-tasks

或者,鉴于你这样说:

  

(部分管道只能在工作的某些时段工作   天)。

您可能需要考虑将这些任务制成可以安全重复的一口大小的阶段,可能使用数据存储区来保存状态。

我在app引擎的python ssl库中发现了一次内存泄漏,这导致我的整个实例每隔几分钟就崩溃了,它真的搞砸了我长时间运行的任务,因为它们都会重新启动。