我想在云上运行一个长期运行的工作。此任务可能执行超过 30 分钟,并且主要发送 API 请求。云运行在大约 20 分钟后停止执行,从指标来看,它似乎没有识别出我的任务仍处于运行状态。所以它可能认为它正在空转并关闭容器。我想我可以在作业运行时调用服务器以保持容器处于活动状态,但是有没有办法从容器向云运行发出信号,该作业仍然处于活动状态而不是关闭容器?
我可以说它正在关闭容器,因为日志刚刚停止。然后,我对云运行端点的下一次调用,我可以再次从 NodeJS express 中看到“监听”日志。
我想在云上运行一个长期运行的工作。此任务可能执行超过 30 分钟,并且主要发送 API 请求。云运行在大约 20 分钟后停止执行,从指标来看,它似乎没有识别出我的任务仍处于运行状态。所以它可能认为它正在空转并关闭容器。我想我可以在作业运行时调用服务器以保持容器处于活动状态,但是有没有办法从容器向云运行发出信号,该作业仍然处于活动状态而不是关闭容器?
我可以说它正在关闭容器,因为日志刚刚停止。然后,我对云运行端点的下一次调用,我可以再次从 NodeJS express 中看到“监听”日志。
根据文档,Cloud Run 将在 15 分钟后超时,并且该限制无法增加。因此,对于长时间运行的任务,Cloud Run 并不是一个很好的解决方案。如果您的工作需要长时间运行,请考虑将工作委派给 Compute Engine 或其他没有时间限制的产品。
我想在云上运行一个长期运行的工作。
这是一条红鲱鱼。
在 Cloud Run 上,不能保证会使用相同的容器。这是最好的努力。
虽然您不处理请求,但您的 CPU 将被限制为接近 0,因此您现在尝试做的事情(运行后台任务并尝试通过发送请求来保持容器活动)不是一个好主意。您的应用模型很可能不适合 Cloud Run,我推荐其他可以让您运行长时间运行的进程的计算产品。
是的,您可以使用。您可以创建一个计时器,在 5 分钟后调用您自己的 api,因此 15 分钟后不会超时。每当计时器执行时,它都会在您的服务器上创建一个虚拟请求。
其他选项,如果您的后端请求在 1 小时内完成,您可以将容器的请求超时从 5 分钟增加到 1 小时