gpt4 book ai didi

google-app-engine - 谷歌应用引擎 API : Running large tasks

转载 作者:太空宇宙 更新时间:2023-11-03 15:36:24 24 4
gpt4 key购买 nike

你好,

我正在将应用程序的后端作为应用程序引擎 (Java) 运行。使用端点,我收到请求。问题是,我需要计算一些大的东西,但我需要前端的快速响应时间。因此,作为一种解决方案,我想预先计算一些东西,并将其存储在专用的内存缓存中。

我这样做的方法是添加静态 block ,然后在默认队列上运行延迟任务。 有没有更好的方法在启动时进行计算?

现在,这个延迟任务执行大量数据存储操作。有时,他们会超时。所以我创建了一个系统,它在超时时重试直到成功。但是,当我启动应用引擎时,它会立即创建两个延迟任务。它也会在任务失败时不断重试任务,尽管我设置了 DeferredTaskContext.setDoNotRetry(true);。

老实说,延迟任务感觉非常挑剔。

我只想运行一个需要 >5 分钟的方法(随着数据集的增长可能会更长)。我想在启动时运行此方法,然后定期运行。您将如何对此建模?我的第一个想法是 cron 作业,但它们的时间有限。我需要一个运行延迟任务的 cron 作业,希望它们不会以某种方式堆积或产生重复项或开始重试。

感谢您的帮助,祝您愉快。

最佳答案

  1. 您的数据存储操作永远不会超时。您需要解决此问题 - 最有可能的方法是使用游标并为您的大型查询设置正确的批处理大小。

  2. 您可以执行 initialization of objects on instance startup - 检查对象是否可用,如果不可用 - 进行计算。

  3. 请记住将计算结果存储在数据存储中(除了 Memcache 之外),因为 Memcache 是易变的。这样,如果 Memcache 对象因任何原因被丢弃,您不必在第一次计算完成几秒钟后重新计算所有内容。

  4. 可以安排延迟任务在指定延迟后执行。因此,您可以创建一个要在 1 小时后执行的任务(例如),而不是使用 cron 作业。这个任务,当它完成了自己的计算后,可以在一个小时后创建另一个任务来激发,依此类推。

关于google-app-engine - 谷歌应用引擎 API : Running large tasks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34526391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com