Google 应用引擎 API:运行 大任务
Google app engine API: Running large tasks
美好的一天,
我正在 运行 将应用程序的后端作为应用程序引擎 (Java)。
使用端点,我收到请求。问题是,我需要计算一些大的东西,但我需要前端的快速响应时间。因此,作为一种解决方案,我想预先计算一些东西,并将其存储在专用的内存缓存中。
我这样做的方法是添加一个静态块,然后 运行在默认队列上添加一个延迟任务。 是否有更好的方法在启动时进行计算?
现在,此延迟任务执行大量数据存储操作。有时,他们会超时。所以我创建了一个系统,它在超时时重试直到成功。但是,当我启动应用引擎时,它会立即创建两个延迟任务。尽管我设置了 DeferredTaskContext.setDoNotRetry(true);.
,但它也会在任务失败时不断重试任务
老实说,延迟任务感觉非常挑剔。
我只想 运行 一个需要 >5 分钟的方法(随着数据集的增长可能会更长)。我想 运行 在启动时使用此方法,然后定期使用此方法。 您将如何建模?我的第一个想法是 cron 作业,但它们的时间有限。我需要一个 运行 是延迟任务的 cron 作业,希望它们不会以某种方式堆积或产生重复项或开始重试。
感谢您的帮助,祝您愉快。
干燥
您的数据存储操作永远不会超时。您需要解决此问题 - 很可能是通过使用游标并为大型查询设置正确的批处理大小。
您可以执行 initialization of objects on instance startup - 检查对象是否可用,如果不可用 - 进行计算。
请记住将计算结果存储在数据存储中(除了 Memcache 之外),因为 Memcache 是易变的。这样,如果 Memcache 对象因任何原因被删除,您不必在第一次计算完成几秒钟后重新计算所有内容。
可以安排延迟任务在指定延迟后执行。因此,您可以创建一个要在 1 小时后执行的任务(例如),而不是使用 cron 作业。这个任务,当它完成了自己的计算后,可以在一个小时后创建另一个任务来激发,依此类推。
美好的一天,
我正在 运行 将应用程序的后端作为应用程序引擎 (Java)。 使用端点,我收到请求。问题是,我需要计算一些大的东西,但我需要前端的快速响应时间。因此,作为一种解决方案,我想预先计算一些东西,并将其存储在专用的内存缓存中。
我这样做的方法是添加一个静态块,然后 运行在默认队列上添加一个延迟任务。 是否有更好的方法在启动时进行计算?
现在,此延迟任务执行大量数据存储操作。有时,他们会超时。所以我创建了一个系统,它在超时时重试直到成功。但是,当我启动应用引擎时,它会立即创建两个延迟任务。尽管我设置了 DeferredTaskContext.setDoNotRetry(true);.
,但它也会在任务失败时不断重试任务老实说,延迟任务感觉非常挑剔。
我只想 运行 一个需要 >5 分钟的方法(随着数据集的增长可能会更长)。我想 运行 在启动时使用此方法,然后定期使用此方法。 您将如何建模?我的第一个想法是 cron 作业,但它们的时间有限。我需要一个 运行 是延迟任务的 cron 作业,希望它们不会以某种方式堆积或产生重复项或开始重试。
感谢您的帮助,祝您愉快。
干燥
您的数据存储操作永远不会超时。您需要解决此问题 - 很可能是通过使用游标并为大型查询设置正确的批处理大小。
您可以执行 initialization of objects on instance startup - 检查对象是否可用,如果不可用 - 进行计算。
请记住将计算结果存储在数据存储中(除了 Memcache 之外),因为 Memcache 是易变的。这样,如果 Memcache 对象因任何原因被删除,您不必在第一次计算完成几秒钟后重新计算所有内容。
可以安排延迟任务在指定延迟后执行。因此,您可以创建一个要在 1 小时后执行的任务(例如),而不是使用 cron 作业。这个任务,当它完成了自己的计算后,可以在一个小时后创建另一个任务来激发,依此类推。