Concatenamento di attività differite con Google App Engine
-
06-07-2019 - |
Domanda
Ho un sito web con cui sto cercando di rimanere aggiornato e di ritagliarne alcuni contenuti ogni giorno. So che il sito viene aggiornato manualmente in un determinato momento e ho impostato pianificazioni cron per riflettere questo, ma poiché viene aggiornato manualmente potrebbe essere 10 o 20 minuti più tardi.
In questo momento ho un aggiornamento cron hack-ish ogni 5 minuti, ma mi piacerebbe usare la libreria differita per fare le cose in modo più preciso. Sto cercando di concatenare le attività differite in modo da poter verificare se c'è stato un aggiornamento e rinviare lo stesso aggiornamento per un paio di minuti se non ce n'è stato, e rinviare nuovamente se necessario fino a quando non c'è finalmente un aggiornamento.
Ho un po 'di codice che pensavo avrebbe funzionato, ma si differenzia sempre e solo una volta, quando invece devo continuare a rinviare fino a quando non c'è un aggiornamento:
(Sto usando Python)
class Ripper(object):
def rip(self):
if siteHasNotBeenUpdated:
deferred.defer(self.rip, _countdown=120)
else:
updateMySite()
Questo era ovviamente solo un estratto semplificato.
Ho pensato che fosse abbastanza semplice da funzionare, ma forse ho sbagliato tutto?
Soluzione
L'esempio che dai dovrebbe funzionare bene. Devi aggiungere la registrazione per determinare se deferred.defer viene chiamato quando pensi che lo sia. Ulteriori informazioni potrebbero anche aiutare: come viene impostato siteHasNotBeenUpdated?