Proprietà Workers

È possibile definire un processo di lavoro da eseguire indipendentemente dall'istanza Web senza un'istanza Nginx in esecuzione. Tuttavia, il processo di lavoro utilizza la stessa archiviazione di rete utilizzata dall'applicazione Commerce. Non è necessario configurare un server Web sull'istanza di lavoro (utilizzando Node.js o Go) perché il router non può indirizzare le richieste pubbliche al worker. Questo rende l’istanza di lavoro ideale per le attività in background o in esecuzione continua che rischiano di bloccare una distribuzione.

Configurare un lavoratore

I processi di lavoro sono disponibili per l'utilizzo solo con gli ambienti di staging e produzione Pro. Gli ambienti di integrazione Pro e Starter possono scegliere di utilizzare la variabile CRON_CONSUMER_RUNNER.

Per configurare un lavoratore in Produzione o Staging, Inviare un ticket di supporto Adobe Commerce e includere le seguenti informazioni:

  • ID Progetto
  • ID ambiente
  • Nome lavoratore
  • Comandi Start

È possibile configurare un processo per ogni lavoratore. Una configurazione di lavoro di base e comune nel file .magento.app.yaml potrebbe essere simile alla seguente:

workers:
    queue:
        commands:
            start: |
                php ./bin/magento queue:consumers:start commerce.eventing.event.publish

In questo esempio viene definito un singolo processo di lavoro denominato queue, con un livello di allocazione delle risorse ridotto (dimensione S) ed eseguito il comando php ./bin/magento all'avvio. Il processo di lavoro queue viene quindi eseguito su ogni nodo come processo di lavoro. Se il comando viene chiuso, viene riavviato automaticamente.

Comandi e sostituzioni

La chiave commands.start è necessaria per avviare i comandi con l'applicazione di lavoro. Puoi utilizzare qualsiasi comando shell valido, anche se è ideale utilizzare la lingua dell’applicazione. Se il comando specificato dal tasto start termina, viene riavviato automaticamente.

IMPORTANT
Gli hook di deploy e post_deploy e i comandi di crons vengono eseguiti solo sul contenitore Web, non nelle istanze di lavoro.

Ereditarietà

Le definizioni per le proprietà size, relationships, access, disk e mount e variables vengono ereditate da un processo di lavoro, a meno che non vengano esplicitamente ignorate.

Le seguenti proprietà sono quelle più comunemente utilizzate per sostituire le impostazioni di primo livello:

  • size: allocazione di un numero inferiore di risorse a un singolo processo in background
  • variables: indica all'applicazione di eseguire diversamente

Tempistica e accodamento

Anche se ogni lavoratore si trova dietro un altro, la seguente configurazione produce una separazione coerente di due secondi tra i timestamp nel file var/time.txt, indipendentemente dalla sospensione di otto secondi all'interno del codice PHP:

workers:
    time1:
        commands:
            start: 'php -r "sleep(8); echo time() . PHP_EOL;" >> var/time.txt& sleep 2'
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26