Utilizzo delle code in modalità pull in Python 2

Questa pagina fornisce una panoramica delle code in modalità pull nell'ambiente standard App Engine.

Nelle code push le attività vengono consegnate a un servizio worker in base alla configurazione della coda. Nelle code pull, il servizio worker deve chiedere le attività alla coda. La coda risponde concedendo al worker l'accesso univoco per elaborare l'attività per un periodo di tempo specificato, chiamato lease.

L'applicazione trasferisce l'attività al servizio di coda delle attività e poi il worker la prende in leasing
dal servizio di coda di attività

Con le code in modalità pull, puoi anche raggruppare le attività correlate con i tag e configurare il worker in modo che esegua il pull di più attività con un determinato tag in una volta sola. Questo processo è chiamato batching.

Se un worker non può elaborare un'attività prima della scadenza del lease, può rinnovare il lease o lasciarla scadere, dopodiché un altro worker potrà acquisirla. Una volta completato il lavoro associato a un'attività, il worker deve eliminarlo.

L'uso delle code in modalità pull richiede che il codice gestisca alcune funzioni automatizzate nelle code in modalità push:

Scalabilità dei worker
Il codice deve scalare il numero di worker in base al volume di elaborazione. Se il tuo codice non gestisce la scalabilità, rischi di sprecare risorse di calcolo se non ci sono attività da elaborare o rischi anche di latenza se hai troppe attività da elaborare.
Eliminazione delle attività
Il tuo codice deve anche eliminare esplicitamente le attività dopo l'elaborazione. Nelle code in modalità push, App Engine elimina le attività per te. Se il worker non elimina le attività coda in modalità pull dopo l'elaborazione, un altro worker elaborerà nuovamente l'attività. Questo spreca risorse di calcolo e rischia di generare errori se le attività non sono idempotenti.

Nell'ambiente standard di App Engine, le code in modalità pull vengono create impostando una proprietà in un file di configurazione denominato queue.yaml.

Flusso di lavoro della coda in modalità pull

I worker che elaborano le attività dalle code in modalità pull devono essere definiti all'interno di un servizio eseguito nell'ambiente standard di App Engine.

Il flusso di lavoro è il seguente:

  1. Puoi creare una coda in modalità pull utilizzando queue.yaml.
  2. Puoi creare attività e aggiungerle alla coda.
  3. Il worker che hai creato affiderà l'attività utilizzando TaskQueue.
  4. App Engine invia i dati delle attività al worker nella risposta al lease.
  5. Il worker elabora l'attività. Se l'attività non viene eseguita prima della scadenza del lease, il worker può modificare la durata del lease. Se il lease scade, l'attività sarà disponibile per essere affittata a un altro worker.
  6. Dopo che un'attività è stata elaborata correttamente, il worker la elimina.

Passaggi successivi