python - 在 gae flexible 上长时间运行的云任务会提前终止而不会出错。如何调试?我错过了什么?
问题描述
我正在使用 python 和烧瓶灵活地在 gae 上运行应用程序。我定期使用 cron 作业调度云任务。这些基本上循环遍历所有用户并执行一些聚类分析。任务终止而不会引发任何类型的错误,但不会执行所有工作(意味着并非所有用户都被循环通过)。它似乎不会在一致的时间 276.5s - 323.3s 发生,也不会在同一个用户处停止。有没有人经历过类似的事情?
我的猜测是我在某处违反了某种类型的资源限制或超时。我想过或尝试过的事情:
应允许云任务运行长达一个小时(根据此:https ://cloud.google.com/tasks/docs/creating-appengine-handlers )
我将 gunicorn 工人的超时时间增加到 3600 以反映这一点。
我有几个工人正在运行。
我试图找出是否存在内存峰值或 CPU 过载,但没有发现任何可疑之处。
抱歉,如果我太含糊或完全没有抓住重点,我对这个问题感到很困惑。感谢您的任何指点。
解决方案
感谢您提供的所有建议,尽管偶然阅读了 Firestore 文档,但我与他们一起玩并找到了根本原因。我没有迹象表明这与 Firestore 有任何关系。
从这里:https ://googleapis.dev/python/firestore/latest/collection.html 我发现 Query.stream()(或 Query.get())对单个文档有超时,如下所示:
注意:在 GAPIC 客户端配置中为 RunQuery API 设置的 max_rpc_timeout_millis 值之后,底层响应流将超时。在该点之前未从迭代器中消耗的快照将丢失。
所以最终超时的是所有用户的查询,我偶然遇到了这个,我发现的任何错误都没有让我回到查询。希望这对将来的人有所帮助!
推荐阅读
- installation - WIX 安装 windows 服务
- excel - 当日期的差异在一系列单元格中小于 45 天时,如何向单元格添加一个点
- java - 如何在spring boot中使用reactiveredisoperations执行redis扩展命令?
- javascript - 重定向到另一个具有基本授权的网页
- python - 沿 3D 数组轴的矢量化欧几里德距离 - Python
- excel - 为什么我在 Range 联合上收到无效的过程调用或参数
- javascript - Javascript 正则表达式 一位小数
- python-3.x - 如何比较数据框中的 PANDAS 列以查找出现在不同列中的所有条目?
- python - 熊猫更好地计算组内的组?
- angular - Angular Ngrx 测试:Store.overrideSelector 不会覆盖