In questa pagina viene descritto come creare attività e inserirle in code in modalità push. Quando Se vuoi elaborare un'attività, devi creare un nuovo oggetto dell'attività e posizionarlo in coda. Puoi specificare esplicitamente il servizio e il gestore che elaborano l'attività, e, facoltativamente, passare dati specifici dell'attività al gestore. Puoi anche ottimizzare la configurazione dell'attività, ad esempio programmare un orario nel futuro quando deve essere eseguita o limita il numero di volte che vuoi che l'attività in caso di errore.
Creazione di una nuova attività
Per creare e accodare un'attività, crea un'attività PushTask
e richiamare il metodo add()
. Puoi aggiungere contenuti a una coda specificata in
queue.yaml
fornendo un argomento di nome coda a add()
. In alternativa,
chiamando add()
senza argomenti, l'attività verrà aggiunta alla coda predefinita.
Puoi anche aggiungere in blocco le attività a una coda utilizzando PushQueue. Nell'esempio seguente, due oggetti PushTask vengono aggiunti a una PushQueue utilizzando il metodo addTasks()
.
Il seguente esempio di codice mostra come aggiungere una singola attività:
Il seguente esempio di codice mostra come aggiungere più attività contemporaneamente:
Quando utilizzi PushTask
e PushQueue
, includi queste dichiarazioni nella parte superiore di
il tuo file PHP:
Specificare il servizio worker
Quando un'attività viene estratta dalla coda, il servizio Coda di attività la invia a un servizio worker. Ogni attività ha un target e un url, che determinano e quale servizio e gestore eseguirà l'attività.
target
La destinazione specifica il servizio che riceverà la richiesta HTTP per eseguire l'attività. Si tratta di una stringa che specifica un servizio/una versione/un'istanza in uno dei formati canonici. I moduli più utilizzati sono:
service
version.service
instance.version.service
La stringa di destinazione è anteposta al nome di dominio dell'app. Esistono tre tipi di modi per impostare la destinazione per un'attività:
Dichiara il target quando crei l'attività. Puoi impostare la destinazione in modo esplicito durante la creazione dell'attività utilizzando l'intestazione nel parametro
$options
quando crei la funzione PushTask :$task = new PushTask( '/worker', [], ['header' => "Host: versionHostname"]);
Includi un'istruzione
target
quando definisci una coda nelqueue.yaml
, come nella definizione diqueue-blue
. Tutte le attività aggiunte a una coda con untarget
utilizzeranno quel target, anche se è stato assegnato un obiettivo diverso all'attività al momento della costruzione.Se non viene specificata nessuna destinazione in base a uno dei due metodi precedenti, il target dell'attività è la versione del servizio che la accoda. Tieni presente che se accoda un'attività dal servizio e dalla versione predefiniti in in questo modo e la versione predefinita cambia prima dell'esecuzione dell'attività, verranno eseguite nella nuova versione predefinita.
url
url
seleziona uno degli handler nel servizio di destinazione che eseguirà l'attività.
url
deve corrispondere a uno dei pattern URL del gestore nel target
completamente gestito di Google Cloud. url
può includere parametri di ricerca se il metodo specificato nell'attività è
GET
o PULL
. Se non viene specificato alcun url
, l'URL predefinito
Viene utilizzato /_ah/queue/[QUEUE_NAME]
, dove [QUEUE_NAME]
è il nome
dell'attività.
Trasferimento dei dati al gestore
Puoi passare i dati al gestore come parametri di ricerca nell'URL dell'attività, ma
solo se il metodo specificato nell'attività è GET
o PULL
.
Il costruttore PushTask
ha un argomento posizionale per query_data.
I dati sono in genere un dizionario di coppie chiave-valore. Se il metodo dell'attività è
POST
o PUT
, i dati vengono aggiunti al payload della richiesta HTTP. Se
è GET, viene aggiunto all'URL come parametri di ricerca.
Assegnare un nome a un'attività
Quando crei una nuova attività, App Engine assegna un nome univoco per impostazione predefinita. Tuttavia, puoi assegnare un nome a un'attività utilizzando l'name
. Un vantaggio di assegnare nomi alle tue attività è che le attività con nome vengono
deduplicate, quindi puoi utilizzare i nomi delle attività
garantire
che un'attività venga aggiunta una sola volta. La deduplicazione continua per 9 giorni dopo il
l'attività è stata completata o eliminata.
Tieni presente che la logica di deduplicazione introduce un overhead significativo in termini di prestazioni, con conseguente aumento delle latenze e potenziali maggiori tassi di errore associate ad attività con nome. Questi costi possono essere aumentati significativamente se sono sequenziali, ad esempio con i timestamp. Quindi, se assegni nomi personalizzati, consigliamo di utilizzare un prefisso ben distribuito per i nomi delle attività, come un hash nei contenuti.
Se assegni i tuoi nomi alle attività, tieni presente che la lunghezza massima del nome è 500 e il nome può contenere lettere maiuscole e minuscole, numeri trattini bassi e trattini.
Passaggi successivi
- Scopri come creare gestori compiti.