首页 > 解决方案 > 在 gae flexible 上长时间运行的云任务会提前终止而不会出错。如何调试?我错过了什么?

问题描述

我正在使用 python 和烧瓶灵活地在 gae 上运行应用程序。我定期使用 cron 作业调度云任务。这些基本上循环遍历所有用户并执行一些聚类分析。任务终止而不会引发任何类型的错误,但不会执行所有工作(意味着并非所有用户都被循环通过)。它似乎不会在一致的时间 276.5s - 323.3s 发生,也不会在同一个用户处停止。有没有人经历过类似的事情?

我的猜测是我在某处违反了某种类型的资源限制或超时。我想过或尝试过的事情:

抱歉,如果我太含糊或完全没有抓住重点,我对这个问题感到很困惑。感谢您的任何指点。

标签: pythongoogle-app-enginegunicorngoogle-cloud-tasks

解决方案


感谢您提供的所有建议,尽管偶然阅读了 Firestore 文档,但我与他们一起玩并找到了根本原因。我没有迹象表明这与 Firestore 有任何关系。

从这里:https ://googleapis.dev/python/firestore/latest/collection.html 我发现 Query.stream()(或 Query.get())对单个文档有超时,如下所示:

注意:在 GAPIC 客户端配置中为 RunQuery API 设置的 max_rpc_timeout_millis 值之后,底层响应流将超时。在该点之前未从迭代器中消耗的快照将丢失。

所以最终超时的是所有用户的查询,我偶然遇到了这个,我发现的任何错误都没有让我回到查询。希望这对将来的人有所帮助!


推荐阅读