2

我计划使用 GAE 的 TaskQueue API 来刷新我的 HTML 页面缓存,我将其保存在 Datastore(和 memcache,但 Datastore 更可靠)中。

每周一次,我添加/编辑一些数据,并且需要重新生成关联的 HTML 页面,触发任务是这样做的。

请注意,不同的编辑可能意味着更改相同的缓存页面。例如,主页有来自不同数据的几个部分的片段。我想要的是延迟(例如使用一小时倒计时)将任务启动到任务队列,以便我可以累积多次编辑,最后,缓存页面只会重新生成一次。

问题是,如果已经有一个任务在一小时内排队重新生成页面 X,我不需要添加任务来重新生成页面 X。因此,我需要检查任务列表,看看是否已经有一个。

如何访问任务列表?

4

2 回答 2

2

我看到添加相同的任务会引发 DuplicateTaskNameError,也许这就是我所需要的。

于 2010-09-16T11:44:47.917 回答
0

每当您进行编辑时,您都可以简单地从缓存中删除该项目。然后,当有人来阅读一个页面时,您会注意到它不在缓存中,并在此时从数据存储中获取它,并使用新检索的数据更新缓存。无论如何,您应该已经有了这种逻辑,因为您不能总是保证该项目将在缓存中。这将影响您进行更新后第一次获取的速度,但之后就可以了。

于 2010-09-16T12:11:13.670 回答