Google AppEngine - 使用 max_concurrent_requests 设置为 1 的队列:进程终止,因为超过了请求截止日期

Google AppEngine - Using queues with max_concurrent_requests set to 1: Process terminated because the request deadline was exceeded

我已经为我的 AppEngine API 设置了一个任务队列。 API 处理大量请求,可能需要长达三个小时才能完成计算,一次处理一项任务。

我在 queue.yaml 文件中将 'max_concurrent_requests' 设置为 1,这样一次只有一个任务处于活动状态,同时增加了 gunicorn 超时时间。

我的问题来了,因为 CloudTask 请求似乎有 10 分钟的超时,之后他们抛出错误: 由于超过了请求截止日期,进程终止。请确保您的 HTTP 服务器正在侦听 0.0.0.0 和 PORT 环境变量定义的端口上的请求。 (错误代码 123)

如何配置我的队列以空闲等待上一个任务完成,而不是简单地超时?

您很可能在 app.yaml 文件中将 App Engine 服务缩放元素设置为 "autoscaling"(或未定义它,自动缩放是默认值)。

自动缩放中的实例有 10 分钟的最后期限,如记录here。您需要使用更新的 app.yaml 文件重新部署您的服务,将缩放元素设置为 "manual scaling" 或 "basic scaling" 以允许您的任务 运行 长达 24 小时。