我有一些长期存在的任务可能需要一周以上的工作才能完成(部分管道只能在一天中的某些时段工作)。
更新租约似乎是正确的方法,因为目前的最大租约长度为1周。在一个overview doc中简要提到了更新租约,但我没有找到任何其他文档来说明如何使用它。
还有一些其他的倾向引用 - taskqueue module文档有一个例外,当你尝试并且无法续订租约时会发生这种情况......但是没有更新租约的方法。 migrating to Cloud Tasks上的文档提到了task.renewLease方法,但表示它不适用于使用内置GAE TaskQueue支持的人。
答案 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库中发现了一次内存泄漏,这导致我的整个实例每隔几分钟就崩溃了,它真的搞砸了我长时间运行的任务,因为它们都会重新启动。