2011-02-05 13 views
5

Google App Engine dispone di due metodi per l'esecuzione di posti di lavoro in un momento successivo, Task Queues e Deferred jopsGoogle App Engine - Utilizzare Task Code o differite Lavoro

Supportano tutte le stesse caratteristiche per quanto posso dire (ad esempio una differita il lavoro può essere inserito in una particolare coda di attività in modo da poter limitare l'esecuzione), ma i lavori posticipati sembrano molto più facili da implementare e più flessibili.

Qualcuno sa dei vantaggi del pro di ogni metodo? Qualsiasi circostanza in cui si desidera utilizzare le code delle attività su processi posticipati?

risposta

11

non so se avete notato, ma la documentazione per deferreds ha questa sezione, alla fine:

ci si potrebbe chiedere quando usare ext.deferred, e quando attaccare con il built -in API della coda di attività. Ecco i nostri suggerimenti.

si consiglia di utilizzare la libreria differita se:

  • Si utilizza solo la coda compito alla leggera.
  • Si desidera rifattorizzare il codice esistente per l'esecuzione nella coda attività con un minimo di modifiche.
  • Si sta scrivendo un'attività di manutenzione una tantum, come la migrazione dello schema.
  • L'app ha diversi tipi di attività in background e la scrittura di un gestore separato per ciascuno sarebbe gravosa.
  • L'attività richiede argomenti complessi che non sono serializzabili facilmente senza utilizzare Pickle.
  • Si sta scrivendo una libreria per altre app che devono eseguire operazioni in background.

Si consiglia di utilizzare l'API Task coda se:

  • è necessario un controllo completo su come le attività sono in coda ed eseguiti.
  • È necessaria una gestione o un monitoraggio della coda migliore di quella fornita in differita.
  • Si ha un elevato throughput e l'overhead è importante.
  • Stai costruendo astrazioni più grandi e hai bisogno di un controllo diretto sulle attività.
  • Ti piace il modello di webhook migliore del modello RPC.

Naturalmente, è possibile utilizzare l'API della coda di attività e la libreria differita affiancata, se l'app ha requisiti che si adattano a entrambi i gruppi.

+1

Doh - come mi è mancato! È possibile accedere ai metadati – Ryan

+1

da differiti usando * os.environ *; con la console di amministrazione è possibile monitorare ogni attività, accodata in base all'attività o differita. – systempuntoout

+0

@systempuntoout: Grazie per le correzioni! Ho usato principalmente l'API della coda delle attività e stavo passando alla documentazione e alla mia memoria confusa quando si trattava dei differiti. Aggiornerò la mia risposta e mi scuso per la disinformazione. – shang