AppEngine - Node云任务处理程序的超时时间是多少?

5
我有一个应用程序,可以使用默认的Cloud Tasks进行后台工作调度/执行进程。
我希望这个任务能够运行几分钟,或者至少了解实际限制是什么以及我可以做些什么。
根据推送队列文档(似乎等同于现代Cloud Tasks?),自动缩放的截止时间为10分钟,基本缩放为24小时。
然而,我的任务似乎在2分钟后崩溃。 115秒没问题,121秒就会崩溃。在所有情况下,工作量和资源消耗都相同。消息总是毫无帮助的“处理此请求的进程意外死亡。这可能会导致新进程用于下一个应用程序请求。(错误代码203)”。
无论我使用自动缩放F2实例还是基本缩放B2,它都会在2分钟后终止。
根据Node请求处理文档,"请求处理程序"有60秒的超时时间。
最终的超时时间是多少?是1分钟、2分钟还是10分钟?如果我希望我的任务运行5或30分钟,是否有什么可以改变它的方法?

1
云任务特定超时注意事项在此处,与您的第一个参考文献对齐(显然与语言沙盒无关)。但实际上,该信息似乎与第二个参考文献相冲突。也许是一些未考虑到的第一/第二代标准环境差异?无论如何,都不符合观察到的120秒 :) - Dan Cornilescu
1
@DanCornilescu 这个问题是,无论AppEngine的超时时间是60秒还是120秒,我是否确实受到了限制?除了启动一个灵活的工作程序之外,我还能做什么来实现长时间运行的作业? - Konrad Garus
你需要弄清楚崩溃的确切原因 - 它可能不是请求截止期限本身引起的(有几种类型的截止期限错误,请参见https://cloud.google.com/appengine/articles/deadlineexceedederrors (不知道如何映射到节点,但也可能是其他原因。 - Dan Cornilescu
1
是的。我已经花费数小时进行研究和实验,StackOverflow也是其中的一部分。问题是:云任务执行是否受到相同的请求处理超时限制?有什么办法可以解决吗?还是我做错了什么? - Konrad Garus
1个回答

5
简而言之,我认为能够帮助您的情况的最佳推断是Node's Request Timeout,默认情况下超时时间为2分钟。

阅读您的问题后,我决定创建一个PoC来解决它

  1. 创建了Dummy Node 8服务,仅使用内置HTTP服务器
  2. 创建了一个URL路径,可以拥有人工长时间的响应(使用setTimeout),并且可以从请求中指定持续时间(例如/lr/300表示它将在大约5分钟内响应)
  3. 将其部署到GAE服务中,而不是default(Node8,自动缩放)
  4. 创建Cloud Tasks“任务”,请求前述服务的/lr/540

之前: Before

如您所见,Cloud Tasks和App Engine在等待超过2分钟时出现问题,并且具有与您收到的相同无用的消息(处理此请求的进程意外死亡...)

然后:Code

我编写了这行代码以增加全局请求超时时间

结果是:Result

在我的情况下,我可以肯定地说,是Node请求超时引起了问题。我希望这对您也有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接