Объединение отложенных задач с Google App Engine

У меня есть веб-сайт, на котором я хочу быть в курсе и каждый день собирать оттуда какой-то контент. Я знаю, что сайт обновляется вручную в определенное время, и я установил расписания cron, чтобы отразить это, но, поскольку он обновляется вручную, это может быть на 10 или даже 20 минут позже.

Прямо сейчас у меня есть хакерское обновление cron каждые 5 минут, но я хотел бы использовать отложенную библиотеку, чтобы делать вещи более точным образом. Я пытаюсь связать отложенные задачи, чтобы я мог проверить, было ли обновление, и отложить это же обновление на пару минут, если его не было, и снова отложить, если это необходимо, до тех пор, пока, наконец, не будет обновления.

У меня есть некоторый код, который, как я думал, будет работать, но он откладывается только один раз, когда вместо этого мне нужно продолжать откладывать до тех пор, пока не появится обновление:

(Я использую Python)

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

Очевидно, это был просто упрощенный отрывок.
Я думал, что это достаточно просто, чтобы работать, но, может быть, я просто все неправильно понял?


person Milo    schedule 27.10.2009    source источник


Ответы (1)


Приведенный вами пример должен работать нормально. Вам нужно добавить ведение журнала, чтобы определить, вызывается ли deferred.defer, когда вы думаете, что это так. Также не помешала бы дополнительная информация: как устанавливается siteHasNotBeenUpdated?

person Nick Johnson    schedule 28.10.2009