Magento2: "Pending, in queue" e gli attributo prodotto che non si aggiornano. Come risolvere

23 Settembre 2021

Un errore che può capitare su Magento2, soprattutto dopo una migrazione, è il famoso messaggio "Pending in queue" sulla modifica massiva degli attributi di uno o più prodotti. E' capitato molte volte anche a me, oggi vedremo insieme come funziona l'update massivo degli attributi di Magento2 e come prevenire o risolvere l'errore "Pending in queue"

Cos'è l'update massivo degli attributi di Magento2

La funzionalità di Update di massa, di Magento2, ci permette di aggiungere un attributo a più prodotti in massa recuperando tempo ed evitando di aggiornare l'attributo prodotto per prodotto. Questo si traduce in soprattutto in efficienza e minor tempo nelle modifiche degli attributi.

Come funziona l'update Massivo di Magento2

Come abbiamo avuto modo di vedere, Magento2 è un CMS molto complesso ed articolato ed anche nelle piccole cose mantiene una struttura che gli permette di lavorare in modo scalabile e robusto. Ecco perchè anche nell'aggiornamento massivo degli attributi possiamo andare a gestire il "carico" di lavoro che Magento2 deve effettuare, e distribuirlo in frazioni di tempo.

Quando andiamo ad aggiornare massivamente un attributo, ad esempio per 1000 prodotti, al momento del salvataggio Magento2 non esegue all'istante l'attività per intero ma la aggiunge alla "queue" ( o meglio dire coda delle attività ). Questa cosa, per quanto possa sembrare banale, è molto importante perchè su E-commerce con molto traffico attivo o con una modifica massiva ( immaginiamo 20.000 - 30.000 da modificare) può permetterci di ridurre al minimo i rallentamenti.

Come? utilizzando la Coda!
La Coda delle attività da svolgere in Magento2 viene regolata dal Cron. Ogni minuto, di norma, sul nostro E-commerce viene eseguito un Cron di Magento che verifica le attività da fare, se ad esempio l'aggiornamento di 20.000 prodotti. Magento ogni minuto andrà ad aggiornare 1000-2000 prodotti. Così da distribuirsi il carico senza appesantire il Server.

Nel caso specifico degli attributi il valore di prodotti che Magento deve elaborare ad ogni minuto, può essere specificato nel file env.php.

Magento2: Come risolvere il problema "pending in queue" degli attributi

Dal Backoffice del nostro E-commerce andando su:

 Sistema > Log Azioni > Azioni di massa

possiamo monitorare quali sono le attività programmate e quali sono quelle eseguite. Può capitare spesso di vedere azioni bloccate con "Pending in queue", anche per giorni o settimane. In quel caso possiamo dire per certo che quell'attività è bloccata e probabilmente non verrà mai eseguita se non interveniamo direttamente noi.

L'errore "pending in queue" può essere causato principalmente dal funzionamento del Cron di magento

La prima prova che puoi fare, è di lanciare dal terminale questo comando:

php bin/magento cron:run

Questo farà partire il cron di Magento manualmente che, di norma, dovrebbe iniziare ad eseguire anche la coda delle attività bloccate. Attendi quindi 1 minuto ed aggiorna la pagina delle attività di massa. A questo punto dovresti vedere alcune attività già svolte.

Se resta tutto uguale, allora vuol dire che qualcosa blocca Magento2 dall'eseguire la coda o che è andata in blocco. quello che puoi fare in questo caso è di lanciare il comando da terminale:

php bin/magento queue:consumer:start product_action_attribute.update

Questo comando, fa partire l'aggiornamento degli attributi dei prodotti. Quindi andiamo a "forzare" Magento2 e a dirgli di eseguire ora l'aggiornamento degli attributi. In molti casi questo funziona, e dovrebbe risolvere il problema.
Se dovesse ripresentarsi nel tempo, ti consiglio di aggiungere a cron questo comando, magari una volta ogni ora.

Se nemmeno così vedi la tua coda elaborarsi, allora puoi procedere con quest ultimo metodo, che va ad eliminare la coda attuale ed a svuotarla. Questo, in estremis, dovrebbe sbloccare il funzionamento delle code.

Per "resettare" le code delle attività da svolgere, collegati al database del tuo E-commerce ( o al PHPMyAdmin del tuo Database) e una volta selezionato il tuo Database, digita:

TRUNCATE magento_operation;
TRUNCATE magento_acknowledged_bulk;
DELETE FROM magento_bulk;
ALTER TABLE magento_bulk AUTO_INCREMENT = 1;

Fatto ciò, dovresti ritrovarti la coda delle attività vuota. Ora riprova a ri eseguire la modifica agli attributi ed a salvare.

Magento ora eseguirà tutto correttamente.

Consulente esperto IT ed imprenditore digitale.
Mi occupo di consulenza digitale ed IT per professionisti affermati e grandi Aziende sul territorio nazionale che vogliono rendere Affidabile e Sicura la loro presenza Online.

Vuoi ottimizzare le Performance e Costi dell'Hosting del tuo E-commerce?

Stanco dei soliti problemi di Performance del tuo E-commerce? Hai un E-commerce lento con Punteggio Google Pagespeed ridicolo?
Contattami ora, riceverai GRATIS entro 24 ore, una prima analisi professionale del tuo Sito web e ti mostrerò come risolvere i tuoi problemi di Performance ed aumentare il tuo Punteggio Google Pagespeed.
Form pag articolo
wpChatIcon
wpChatIcon
crossmenu linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram