Questa pagina descrive come creare le attività e inserirle nelle code in modalità push. Quando vuoi elaborare un'attività, devi creare un nuovo oggetto attività e inserirlo in una coda. Puoi specificare in modo esplicito il servizio e il gestore che elaborano l'attività e, facoltativamente, trasmettere al gestore dati specifici dell'attività. Puoi anche ottimizzare la configurazione dell'attività, ad esempio pianificare un orario futuro in cui deve essere eseguita o limitare il numero di tentativi se l'attività non va a buon fine.
Creazione di una nuova attività
Per creare e mettere in coda un'attività, crea un oggetto PushTask e chiama il relativo metodo add()
. Puoi aggiungere un elemento a una coda specificata in
queue.yaml
fornendo un argomento del nome della coda a add()
. In alternativa,
chiamando add()
senza argomenti, l'attività verrà aggiunta alla coda predefinita.
Puoi anche aggiungere attività in blocco a una coda utilizzando PushQueue. Nell'esempio
seguente, vengono aggiunti due oggetti PushTask 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 istruzioni nella parte superiore del file PHP:
Specificare il servizio di worker
Quando un'attività viene rimossa dalla coda, il servizio Task Queue la invia a un servizio worker. Ogni attività ha un target e un URL, che determinano quale servizio e gestore eseguiranno l'attività.
target
La destinazione specifica il servizio che riceverà la richiesta HTTP per eseguire l'attività. È una stringa che specifica un servizio/versione/istanza in una qualsiasi delle forme canoniche. I moduli più utilizzati sono:
service
version.service
instance.version.service
La stringa di destinazione viene anteposta al nome di dominio della tua app. Esistono tre modi per impostare la destinazione di un'attività:
Dichiara il target quando crei l'attività. Puoi impostare il target in modo esplicito quando crei l'attività utilizzando il parametro header nell'array
$options
quando crei l'oggetto PushTask:$task = new PushTask( '/worker', [], ['header' => "Host: versionHostname"]);
Includi una direttiva
target
quando definisci una coda nelqueue.yaml
, come nella definizione diqueue-blue
. Tutte le attività aggiunte a una coda con untarget
utilizzeranno questa destinazione, anche se all'attività è stata assegnata una destinazione diversa al momento della creazione.Se non viene specificata alcuna destinazione in base a uno dei due metodi precedenti, la destinazione del task è la versione del servizio che lo mette in coda. Tieni presente che se metti in coda un'attività dal servizio e dalla versione predefiniti in questo modo e la versione predefinita cambia prima dell'esecuzione dell'attività, quest'ultima verrà eseguita nella nuova versione predefinita.
url
url
seleziona uno dei gestori nel servizio di destinazione, che eseguirà
l'attività.
url
deve corrispondere a uno dei pattern URL del gestore nel servizio di destinazione. url
può includere parametri di ricerca se il metodo specificato nell'attività è
GET
o PULL
. Se non viene specificato alcun url
, viene utilizzato l'URL predefinito
/_ah/queue/[QUEUE_NAME]
, dove [QUEUE_NAME]
è il nome
della coda del task.
Trasferimento dei dati al gestore
Puoi trasmettere 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 il
metodo è GET, viene aggiunto all'URL come parametri di ricerca.
Assegnare un nome a un'attività
Quando crei una nuova attività, App Engine le assegna un nome univoco per impostazione predefinita. Tuttavia, puoi assegnare il tuo nome a un'attività utilizzando il parametro name
. Un vantaggio dell'assegnazione di nomi alle attività è che le attività con nome vengono
deduplicate, il che significa che puoi utilizzare i nomi delle attività per
garantire
che un'attività venga aggiunta una sola volta. La deduplicazione continua per 9 giorni dopo il
completamento o l'eliminazione dell'attività.
Tieni presente che la logica di deduplicazione introduce un overhead delle prestazioni significativo, con conseguente aumento delle latenze e potenzialmente dei tassi di errore associati alle attività denominate. Questi costi possono aumentare notevolmente se i nomi delle attività sono sequenziali, ad esempio con i timestamp. Pertanto, se assegni i tuoi nomi, ti consigliamo di utilizzare un prefisso ben distribuito per i nomi delle attività, ad esempio un hash dei contenuti.
Se assegni i tuoi nomi alle attività, tieni presente che la lunghezza massima del nome è di 500 caratteri e che il nome può contenere lettere maiuscole e minuscole, numeri, trattini bassi e trattini.
Passaggi successivi
- Scopri come creare gestori di attività.