Creazione delle attività

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à in corso...

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. Nella Nell'esempio seguente, due oggetti PushTask vengono aggiunti a PushQueue utilizzando il metodo addTasks().

Il seguente esempio di codice mostra come aggiungere una singola attività:

$task = new PushTask(
    '/worker',
    ['name' => 'john doe', 'action' => 'send_reminder']);
$task_name = $task->add();

Il seguente esempio di codice mostra come aggiungere più attività contemporaneamente:

$task1 = new PushTask('/someUrl');
$task2 = new PushTask('/someOtherUrl');
$queue = new PushQueue();
$queue->addTasks([$task1, $task2]);

Quando utilizzi PushTask e PushQueue, includi queste dichiarazioni nella parte superiore di il tuo file PHP:

use google\appengine\api\taskqueue\PushTask;
use google\appengine\api\taskqueue\PushQueue;

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 eseguire l'attività. È una stringa che specifica un servizio/una versione/un'istanza uno qualsiasi dei moduli 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 si crea la classe PushTask :

    $task = new PushTask(
        '/worker',
        [],
        ['header' => "Host: versionHostname"]);

  • Includi un'istruzione target quando definisci una coda nella queue.yaml, come nella definizione di queue-blue. Tutte le attività aggiunte a una coda con un target 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 dei gestori nel servizio di destinazione, che eseguire 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 generalmente 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 all'attività un nome univoco predefinito. 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 sovraccarico di prestazioni significativo, 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