Una volta che le attività sono in una coda pull, un worker può acquisire il loro leasing. Dopo l'elaborazione delle attività deve essere eliminata dal worker.
Prima di iniziare
- Crea una coda in modalità pull.
- Crea attività e aggiungile alla coda pull.
Contesto importante
- Questo metodo è applicabile solo ai worker in esecuzione in un servizio nell'ambiente standard.
- Quando utilizzi le code in modalità pull, sei responsabile della scalabilità dei worker in base al volume di elaborazione.
Attività di leasing
Una volta che le attività sono in coda, un lavoratore può acquisirne una o più in leasing utilizzando il metodo taskqueue.Lease
. Potrebbe trascorrere un po' di tempo prima che le attività aggiunte di recente utilizzando taskqueue.Add
diventino disponibili tramite taskqueue.Lease
.
Quando richiedi un lease, specifichi il numero di attività di cui eseguire il lease (fino a un massimo di 1000) e la durata in secondi (fino a un massimo di una settimana). La durata del lease deve essere sufficientemente lunga da garantire che l'attività più lenta abbia il tempo di terminare prima della scadenza del periodo di lease. Puoi modificare il lease di un'attività utilizzando taskqueue.ModifyLease
.
L'attività in leasing rende non disponibile per l'elaborazione da parte di un altro worker e rimane non disponibile fino alla scadenza del lease.
Il seguente esempio di codice acquisisce in leasing 100 attività dalla coda pull-queue
per un'ora:
Raggruppamento con i tag delle attività
Non tutte le attività sono uguali; il tuo codice può "taggare" e poi scegli le attività di cui eseguire il leasing in base al tag. Il tag funge da filtro. Il seguente esempio di codice mostra come taggare le attività e quindi leasing in base ai tag:
Regolazione dei seggi elettorali
I worker che eseguono il polling della coda per il lease delle attività devono rilevare se stanno tentando di eseguire il lease delle attività più velocemente di quanto la coda possa fornirle. Se si verifica questo errore, taskqueue.Lease
restituirà un errore di ritiro.
Il codice deve gestire questi errori, ritirarsi dalla chiamata a taskqueue.Lease
e riprovare più tardi. Per evitare questo problema, valuta la possibilità di impostare una scadenza RPC più alta quando chiami taskqueue.Lease
. Inoltre, devi eseguire il riavvolgimento quando una richiesta di leasing restituisce un elenco vuoto di attività.
Se generi più di 10 richieste LeaseTasks per coda al secondo, solo le prime 10 restituiranno risultati. Se le richieste superano questo limite, viene restituito OK
con zero risultati.
Monitoraggio delle attività nella console Google Cloud
Per visualizzare le informazioni su tutte le attività e le code nella tua applicazione:
Apri la pagina Cloud Tasks nella console Google Cloud e cerca il valore Pull nella colonna Tipo.
Fai clic sul nome della coda che ti interessa per aprire la pagina dei dettagli della coda. Vengono visualizzate tutte le attività nella coda selezionata.
Eliminazione attività in corso...
Una volta che un worker completa un'attività, deve eliminarla dalla coda. Se noti delle attività rimanenti in una coda dopo che un worker le ha elaborate, è probabile che l'operazione non sia riuscita; in questo caso le attività verranno elaborate da un altro worker.
Puoi eliminare un elenco di attività, ad esempio quello restituito da taskqueue.Lease
, passandolo a taskqueue.DeleteMulti
: