2009-10-27 4 views
0

J'ai un site Web que je cherche à garder à jour avec et gratter du contenu à partir de là tous les jours. Je sais que le site est mis à jour manuellement à un certain moment, et j'ai fixé des horaires cron pour le refléter, mais comme il est mis à jour manuellement, il pourrait être 10 ou même 20 minutes plus tard.Chaînage des tâches différées avec Google App Engine

À l'heure actuelle, j'ai une mise à jour cron hack-ish toutes les 5 minutes, mais je voudrais utiliser la bibliothèque différée pour faire les choses de manière plus précise. J'essaie d'enchaîner les tâches différées afin que je puisse vérifier s'il y a eu une mise à jour et différer la même mise à jour pendant quelques minutes s'il n'y en avait pas, et reporter à nouveau si nécessaire jusqu'à ce qu'il y ait une mise à jour.

J'ai un code Je pensais que cela fonctionnerait, mais il ne sursoit jamais une fois, quand au lieu je dois continuer de différer jusqu'à une mise à jour:

(J'utilise Python)

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

C'était juste un extrait simplifié évidemment.
Je pensais que c'était assez simple pour travailler, mais peut-être que j'ai tout faux?

Répondre

2

L'exemple que vous donnez devrait fonctionner correctement. Vous devez ajouter la journalisation pour déterminer si le fichier deferred.defer est appelé lorsque vous le pensez. Plus d'informations aideraient aussi: Comment est défini siteHasNotBeenUpdated?