Questa pagina descrive cosa sono le code di attività nonché quando e come utilizzarle. Le code di attività consentono alle applicazioni di eseguire operazioni, chiamate attività, in modo asincrono al di fuori di una richiesta utente. Se un'app deve eseguire un lavoro in background, aggiunge attività alle code di attività. Le attività vengono eseguite in un secondo momento dai servizi worker.
Il servizio Task Queue è progettato per il lavoro asincrono. Non fornisce garanzie solide in merito alla tempistica di consegna delle attività ed è quindi inadatto alle applicazioni interattive in cui un utente attende il risultato.
Code in modalità push e pull
Le code di attività sono di due tipi: push e pull. Il modo in cui il servizio Task Queue invia le richieste di attività ai servizi worker è diverso per le diverse code.
Le code push eseguono attività inviando le richieste HTTP ai servizi worker App Engine. Questi servizi inviano le richieste a una velocità costante e affidabile e garantiscono l'esecuzione affidabile delle attività. Poiché puoi controllare la velocità con cui le attività vengono inviate dalla coda, puoi controllare il comportamento di scalabilità dei worker e quindi i costi.
Poiché le attività vengono eseguite come richieste destinate ai servizi App Engine, sono soggette a scadenze rigorose. Le attività gestite dai servizi di scalabilità automatica devono terminare in dieci minuti. Le attività gestite dai servizi di scalabilità di base e manuale possono essere eseguite per un massimo di 24 ore.
Le code pull non distribuiscono affatto le attività. Dipendono da altri servizi worker per "affittare" le attività dalla coda di propria iniziativa. Le code pull ti offrono maggiore potenza e flessibilità su quando e dove vengono elaborate le attività, ma richiedono anche una maggiore gestione dei processi. Quando un'attività viene affittata, il leasing worker dichiara una scadenza. Entro la scadenza, il worker deve completare l'attività ed eliminarla, altrimenti il servizio Task Queue consentirà a un altro worker di acquisirla.
Tutte le attività della coda di attività vengono eseguite in modo asincrono. L'applicazione che crea l'attività la trasferisce alla coda. L'applicazione di origine non riceve una notifica se l'attività viene completata o meno o se è stata eseguita correttamente.
Se un worker non riesce a elaborare un'attività, il servizio Task Queue fornisce alla coda un meccanismo di nuovi tentativi, in modo che l'attività possa essere ritentata un numero finito di volte.
Casi d'uso
Code in modalità push
Un caso d'uso tipico della coda in modalità push è un'operazione "lenta". Prendi in considerazione un sistema di messaggistica di un social network. Ogni volta che un utente invia un messaggio, la rete deve aggiornare i follower del mittente. Questa operazione può richiedere molto tempo. Utilizzando una coda in modalità push, l'applicazione può accodare un'attività per ogni messaggio man mano che arriva per essere inviato a un servizio di worker per l'elaborazione. Quando il worker riceve la richiesta di attività, può recuperare l'elenco dei follower del mittente e aggiornare il database per ciascuno. Il worker può essere reso ancora più efficiente mettendo in coda un altro pushtask per ogni aggiornamento del database.
Un altro utilizzo delle code push è per le attività pianificate. Immagina un'applicazione che implementa una campagna pubblicitaria. Un gruppo di attività scritte per inviare email può essere aggiunto a una coda in modalità push con istruzioni per sospendere le attività fino a un momento specifico in futuro. Quando arriva la data di scadenza, il servizio Task Queue inizierà a inviare richieste per eseguire le attività.
Passaggi successivi
- Scopri di più sulle code push