Panoramica delle code di attività

In questa pagina vengono descritte le code di attività e quando e come utilizzarle. Le code di attività consentono alle applicazioni di eseguire operazioni chiamate 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 coda di attività è progettato per il lavoro asincrono. Non fornisce garanzie solide in merito alla tempistica della consegna delle attività e non è quindi adatto ad applicazioni interattive in cui l'utente attende il risultato.

Code in modalità push e code in modalità pull

Le code di attività sono di due versioni, push e pull. Il modo in cui il servizio coda di attività invia le richieste di attività ai servizi worker è diverso per le diverse code.

Le code di push eseguono attività inviando richieste HTTP ai servizi worker App Engine. Inviano queste richieste a una frequenza affidabile e costante e garantiscono un'esecuzione affidabile delle attività. Poiché puoi controllare la frequenza di invio delle attività dalla coda, puoi controllare il comportamento della scalabilità e, di conseguenza, i costi.

Poiché le attività vengono eseguite come richieste indirizzate ai servizi App Engine, sono soggette a scadenze rigorose. Le attività gestite dai servizi di scalabilità automatica devono terminare tra dieci minuti. Le attività gestite dai servizi di scalabilità manuale e di base possono essere eseguite per un massimo di 24 ore.

Le coda di pull non inviano attività. Dipendono da altri servizi worker per "affittare" le attività dalla coda di propria iniziativa. Le code in modalità pull ti offrono più potenza e flessibilità su quando e dove le attività vengono elaborate, ma richiedono anche una maggiore gestione dei processi. Quando un'attività è in affitto, il worker per leasing dichiara una scadenza. Quando arriva la scadenza, il worker deve completare l'attività ed eliminarla oppure il servizio coda attività consentirà a un altro worker di noleggiarlo.

Suggerimento: in alcuni casi, Google Cloud Pub/Sub è una buona alternativa per estrarre code.

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 alcuna notifica in merito al completamento o meno dell'attività.

Se un worker non elabora un'attività, il servizio coda delle attività fornisce un meccanismo di ripetizione in modo che l'attività possa essere ripetuta un numero limitato di volte.

Casi d'uso

Code in modalità push

Un tipico caso di utilizzo della coda in modalità push è un'operazione "lenta". Considera un sistema di messaggistica sui 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 a un servizio worker per l'elaborazione. Quando il worker riceve la richiesta di attività, può recuperare l'elenco dei follower e aggiornare il DB per ciascuno. Il worker può essere reso ancora più efficiente in coda con un'altra attività push per ogni aggiornamento del database.

Un altro utilizzo per le code in modalità push è l'esecuzione di attività programmate. 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 le istruzioni per trattenere le attività fino a un momento specifico futuro. Quando arriva la data di scadenza, il servizio coda attività inizierà a inviare richieste di esecuzione delle attività.

Code in modalità pull

Le code in modalità pull funzionano bene quando devi raggruppare le attività per un'esecuzione efficiente. Una soluzione sfrutta la possibilità di associare un tag a un'attività di pull. I worker possono noleggiare un gruppo di attività che hanno lo stesso tag. Un esempio tipico potrebbe essere un'app che gestisce classifiche per numerosi giochi diversi, con molti giocatori e gruppi in continua azione. Ogni volta che è disponibile un nuovo punteggio più alto, l'app può aggiungere in coda un'attività di pull con il punteggio e il giocatore e utilizzare l'ID gioco come tag attività. Un worker si "rialza" periodicamente, concede un gruppo di attività con lo stesso ID gioco e aggiorna la classifica. È possibile concedere in modo esplicito le attività, utilizzando un valore di tag specificato, o consentire al servizio di decidere quale gruppo di attività con tag simili inviare.

Raggruppare con i tag può essere molto potente. Poiché i tag possono essere generati dinamicamente mentre l'app è in esecuzione, un worker può gestire nuovi ID gioco senza alcuno sforzo speciale.

Passaggi successivi