Questa pagina descrive cosa sono le code di attività, quando e come utilizzarle. Le code di attività consentono alle applicazioni di eseguire operazioni, chiamate tasks, in modo asincrono al di fuori della richiesta di un utente. Se un'app deve eseguire operazioni in background, aggiunge attività alle code di attività. Le attività vengono eseguite in un secondo momento dai servizi worker.
Il servizio Coda di attività è progettato per il lavoro asincrono. Non fornisce forti garanzie in merito ai tempi di esecuzione delle attività ed è quindi inadatto per le applicazioni interattive in cui un utente è in attesa del risultato.
Code in modalità push e code in modalità pull
Le code di attività sono disponibili in due versioni: push e pull. Il modo in cui Il servizio della coda di attività invia richieste di attività ai servizi worker è diverso per le diverse code.
Le code push eseguono le attività inviando richieste HTTP ai servizi worker App Engine. Inviano queste richieste a una frequenza costante e affidabile e garantiscono un'esecuzione affidabile delle attività. Poiché puoi controllare la frequenza con cui le attività vengono inviate dalla coda, puoi controllare il comportamento di scalabilità dei worker e, di conseguenza, i costi.
Poiché le attività vengono eseguite come richieste mirate ai servizi App Engine, sono soggette a scadenze rigorose. Attività gestite dalla gestione dei servizi di scalabilità deve terminare in dieci minuti. Attività gestite da attività di base e manuali possono essere eseguiti per un massimo di 24 ore.
Le code pull non inviano attività. Dipendono da altri servizi worker per "noleggiare" le attività dalla coda di propria iniziativa. Code in modalità pull offrono maggiore potenza e flessibilità su quando e dove le attività vengono elaborate, ma richiedono anche una maggiore gestione dei processi. Quando un'attività viene affittata, il worker in leasing dichiara una scadenza. Entro la scadenza, l'operatore deve completare l'attività ed eliminarla oppure il servizio Task Queue consentirà a un altro operatore di acquisirla in leasing.
Tutte le attività coda di attività vengono eseguite in modo asincrono. L'applicazione che crea l'attività la passa alla coda. L'applicazione di origine non viene informata se l'attività è stata completata o meno o se è andata a buon fine.
Se un worker non riesce a elaborare un'attività, il servizio Task Queue fornisce alla coda un meccanismo di ripetizione, in modo che l'attività possa essere ripetuta un numero finito di volte.
Casi d'uso
Code in modalità push
Un caso d'uso tipico della coda push è un'operazione "lenta". Prendi in considerazione di messaggistica di rete. Ogni volta che un utente invia un messaggio, la rete deve aggiornare i follower del mittente. Questa può essere un'operazione molto laboriosa. Usando una coda in modalità push, l'applicazione può accodare un'attività per ogni quando arriva per essere inviato a un servizio worker per l'elaborazione. Quando il worker riceve la richiesta dell'attività, può recuperare l'elenco i follower e aggiornano il database per ciascuno. Il worker può essere reso ancora più efficiente inserendo in coda un'altra attività push per ogni aggiornamento del database.
Un altro utilizzo delle code push è per le attività pianificate. Immagina un'applicazione implementa una campagna pubblicitaria. Un gruppo di attività scritte per l'invio di email può essere aggiunto a una coda push con istruzioni per trattenere le attività fino a un momento futuro specificato. Quando arriva la data di scadenza, il servizio Coda di attività a inviare richieste per eseguire le attività.
Code in modalità pull
Le code in modalità pull funzionano bene quando devi raggruppare le attività in batch per dell'esecuzione. Una soluzione sfrutta la possibilità di collegare un tag a un dell'attività di pull. I worker possono affittare un gruppo di attività con lo stesso tag. Un tipico un'app che gestisce classifiche di molti giochi diversi, ad esempio molti giocatori e gruppi entrano costantemente in gioco. Ogni volta che viene registrato un nuovo record, l'app può mettere in coda un'attività pull con il punteggio e il giocatore e utilizzare l'ID gioco come tag attività. Un lavoratore si "risveglia" periodicamente e affitta un gruppo di con lo stesso ID gioco e aggiorna la classifica. Puoi assegnare le attività esplicitamente, utilizzando un valore del tag specificato, o lasciare che sia il servizio a decidere quale gruppo di attività con tag simili inviare.
L'aggregazione con i tag può essere molto efficace. Poiché i tag possono essere generati dinamicamente mentre l'app è in esecuzione, un worker può gestire i nuovi ID di gioco senza alcuno sforzo particolare.