gae Flexible 上长时间运行的云任务提前终止,没有错误.如何调试?我错过了什么?



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

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

  • 云任务应允许运行长达一个小时(根据:https://cloud.google.com/tasks/docs/creating-appengine-handlers(

  • 我将 gunicorn 工人的超时增加到 3600 以反映这一点。

  • 我有几个工人在运行。

  • 我试图找出是否存在内存峰值或 CPU 过载,但没有看到任何可疑的东西。

对不起,如果我太模糊或完全错过了重点,我对这个问题很困惑。感谢您的任何指示。

感谢您的所有建议,我玩弄它们并找出了根本原因,尽管偶然阅读了消防站文档。我没有迹象表明这与火库有任何关系。

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

注意:底层响应流将在 max_rpc_timeout_millis 在 GAPIC 客户端配置中为 设置的值 RunQuery API。在此之前未从迭代器使用的快照 点将丢失。

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

除了使用云计划程序之外,您还可以检查日志以确保任务正常运行并确保没有截止日期问题。随着应用程序日志的分组,并且在任务本身执行后,它被发送到 Stackdriver。强制终止任务时,不得输出日志。尝试捕获 Deadline 异常,以便输出一些日志,您可能会看到一些有用的信息来开始故障排除。

最新更新