【问题标题】:how can I have access to a task list on GAE?如何访问 GAE 上的任务列表?
【发布时间】:2010-09-16 11:36:33
【问题描述】:

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

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

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

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

如何访问任务列表?

【问题讨论】:

    标签: google-app-engine scheduled-tasks task-queue


    【解决方案1】:

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

    【讨论】:

    • 正确 - 这是任务名称的目的。请注意,您还需要捕获 TombstonedTaskNameError,以防任务已经运行。
    【解决方案2】:

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

    【讨论】:

    • 首先,有些页面很难生成,有时会超过 30 秒的截止日期,所以最好离线渲染。其次,我可以使用 TaskQueue 上的字节配额来确保我的缓存始终是最新的。但是,是的,这是默认行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 2016-07-14
    • 2011-07-28
    相关资源
    最近更新 更多