在Google App Engine中链式延迟任务

0 投票
1 回答
765 浏览
提问于 2025-04-15 15:25

我有一个网站,想每天从上面获取一些内容并保持更新。我知道这个网站是手动在某个时间更新的,我也设置了定时任务来对应这个时间,但因为是手动更新,所以可能会晚10分钟甚至20分钟。

现在我每5分钟就会执行一次定时任务,但我想用一个叫做“延迟库”的东西来更精确地处理这个问题。我想把延迟任务串联起来,这样我就可以检查是否有更新,如果没有更新,就再延迟几分钟,如果还没有更新,就继续延迟,直到最终有更新为止。

我有一些代码,觉得应该能工作,但它只延迟了一次,而我需要的是继续延迟,直到有更新出现:

(我在用Python)

class Ripper(object):
    def rip(self):
        if siteHasNotBeenUpdated:
            deferred.defer(self.rip, _countdown=120)
        else:
            updateMySite()

这只是一个简化的代码片段。
我觉得这个方法应该简单有效,但也许我搞错了?

1 个回答

2

你给的例子应该是可以正常工作的。你需要加一些日志记录,看看在你认为应该调用deferred.defer的时候,实际上有没有被调用。还有更多的信息也会有帮助:siteHasNotBeenUpdated是怎么设置的?

撰写回答