Se abre en una pestaña nueva

Action Scheduler en WooCommerce: qué hacer cuando las tareas pendientes no paran de crecer

Cola de acciones pendientes de WooCommerce representada como tareas acumuladas en un sistema de procesamiento

Entras en WooCommerce > Estado > Acciones programadas y encuentras cientos o miles de tareas pendientes. Algunas llevan horas esperando. Otras aparecen como fallidas. Limpias unas cuantas y, al poco tiempo, vuelven a acumularse.

La primera tentación suele ser borrar la cola.

No empieces por ahí.

Una cola grande de acciones programadas no es necesariamente un problema. WooCommerce y muchos de sus plugins utilizan Action Scheduler para ejecutar procesos en segundo plano. Lo importante no es cuántas acciones aparecen, sino si se están procesando al ritmo esperado, cuáles se atascan y qué plugin está generándolas.

Si la cola crece continuamente, hay acciones vencidas desde hace mucho tiempo o aparecen fallos repetidos, entonces sí conviene investigar.

Qué es Action Scheduler y por qué aparece en WooCommerce

Action Scheduler es un sistema para gestionar tareas en segundo plano dentro de WordPress. WooCommerce lo utiliza, y también lo hacen numerosas extensiones.

Entre otras cosas, esas tareas pueden intervenir en:

  • procesamiento relacionado con pedidos;
  • envío de determinados correos;
  • webhooks;
  • renovaciones de suscripciones;
  • sincronización con servicios externos;
  • importaciones o exportaciones;
  • actualización de datos;
  • procesos de plugins de marketing;
  • tareas de mantenimiento.

WooCommerce permite examinarlas desde:

WooCommerce > Estado > Acciones programadas

Dependiendo de la instalación también pueden encontrarse en:

Herramientas > Acciones programadas

La propia documentación de WooCommerce explica que estas tareas se ejecutan en segundo plano y que Action Scheduler se apoya normalmente en WP-Cron para activar su procesamiento.

Esto último es importante: una cola atascada puede ser un problema de Action Scheduler, pero también puede ser consecuencia de que WP-Cron no esté funcionando correctamente, de que una tarea falle una y otra vez o de que un plugin esté generando trabajo más rápido de lo que el servidor consigue procesarlo.

Tener muchas acciones pendientes no significa necesariamente que WooCommerce esté roto

No existe una cifra universal a partir de la cual podamos decir que una tienda tiene demasiadas acciones.

Una tienda con mucho tráfico, suscripciones, integraciones externas y automatizaciones puede ejecutar continuamente miles de procesos. Otra tienda mucho más pequeña puede tener solo unas decenas.

Por eso, mirar únicamente el contador puede llevar a conclusiones equivocadas.

Hay que observar el comportamiento de la cola.

Una cola puede ser razonablemente normal cuando:

  • las tareas pendientes son recientes;
  • las más antiguas van desapareciendo;
  • las acciones completadas siguen aumentando;
  • no se acumulan numerosos fallos del mismo tipo;
  • no hay retrasos perceptibles en procesos importantes.

La situación resulta más sospechosa cuando:

  • las acciones pendientes aumentan continuamente;
  • existen tareas vencidas desde hace horas o días;
  • el mismo hook falla repetidamente;
  • aparecen miles de acciones idénticas;
  • algunos procesos de WooCommerce dejan de realizarse;
  • el administrador de WordPress se vuelve especialmente lento;
  • aumenta considerablemente el consumo de CPU o de base de datos.

En ese caso no tienes simplemente una cola grande. Tienes que averiguar qué está impidiendo que la cola avance.

Antes de borrar nada, identifica qué acciones se están acumulando

La pantalla de acciones programadas contiene una pista especialmente útil: el hook.

El nombre del hook indica qué tarea se está intentando ejecutar.

En lugar de fijarte solo en el número total de acciones pendientes, comprueba:

  1. cuáles son las acciones pendientes más antiguas;
  2. qué hooks aparecen repetidos;
  3. qué grupo las genera;
  4. cuáles están fallando;
  5. con qué frecuencia se vuelven a crear.

Action Scheduler permite filtrar por estados como pendientes, completadas, fallidas o en curso y consultar el registro de determinadas ejecuciones. Es precisamente una de las funciones para las que se creó su panel de administración.

Si descubres, por ejemplo, 5.000 acciones pendientes pero 4.800 pertenecen al mismo hook, acabas de reducir considerablemente el problema.

Ya no estás investigando «por qué WooCommerce tiene tantas tareas».

Estás investigando qué está haciendo el plugin responsable de ese hook y por qué sus tareas no terminan correctamente.

Comprueba primero las acciones fallidas

Las acciones fallidas suelen proporcionar más información que las pendientes.

Abre alguna de ellas y revisa su registro.

Busca patrones:

  • mismo hook;
  • mismo plugin;
  • mismo error;
  • misma hora aproximada;
  • repetición continua después de cada intento.

Una acción puede fallar por razones muy diferentes:

  • errores PHP;
  • una API externa que no responde;
  • problemas de autenticación;
  • falta de memoria;
  • tiempo máximo de ejecución;
  • consultas demasiado pesadas;
  • errores de base de datos;
  • conflicto entre plugins;
  • datos que el proceso no puede manejar.

Por eso, eliminar una acción fallida no corrige necesariamente nada.

Si el plugin continúa intentando programarla, volverá a aparecer.

Es parecido a borrar un mensaje de error sin resolver aquello que lo está generando.

Si además observas errores PHP, cambios recientes de versión o plugins antiguos, conviene ampliar el diagnóstico. En cómo actualizar un WordPress antiguo sin romperlo explicamos cómo revisar dependencias y compatibilidad antes de realizar cambios importantes.

Comprueba si WP-Cron está funcionando

Action Scheduler y WP-Cron no son exactamente lo mismo, pero están estrechamente relacionados.

Por defecto, Action Scheduler utiliza un proceso activado mediante WP-Cron para poner en marcha su cola. WooCommerce también señala esta dependencia en su documentación.

Por tanto, si WP-Cron no se ejecuta correctamente, Action Scheduler puede empezar a acumular trabajo.

WordPress no utiliza cron exactamente igual que un servidor Linux tradicional. WP-Cron comprueba las tareas programadas cuando se producen determinadas peticiones al sitio.

Esto puede provocar problemas, entre otros casos, cuando:

  • la web recibe muy poco tráfico;
  • WP-Cron se ha desactivado en wp-config.php;
  • existe un cron real mal configurado en el servidor;
  • las peticiones internas hacia wp-cron.php fallan;
  • alguna capa de seguridad bloquea esas peticiones;
  • existen errores que impiden terminar la ejecución.

Si tienes acceso a WP-CLI, WordPress dispone de una comprobación específica:

wp cron test

También permite examinar los eventos programados y ejecutar los que ya deberían haberse procesado.

No obstante, ejecutar manualmente toda la cola no debería convertirse en la solución permanente. Si el problema reaparece, debes encontrar la causa.

Averigua si la cola crece más rápido de lo que puede procesarse

Hay un segundo escenario muy distinto.

WP-Cron funciona. Action Scheduler funciona. Las tareas se ejecutan.

Pero entran más trabajos de los que salen.

Puede ocurrir con:

  • tiendas con mucho volumen;
  • importaciones masivas;
  • sincronizaciones frecuentes;
  • plugins que generan tareas continuamente;
  • integraciones con CRM, ERP o herramientas de marketing;
  • suscripciones;
  • grandes procesos de actualización;
  • servidores con pocos recursos.

En este caso, vaciar manualmente la cola tampoco resuelve el problema.

Necesitas averiguar:

¿qué está generando tantas acciones y cuánto tarda cada una en ejecutarse?

Aquí es donde el nombre del hook y el grupo vuelven a ser fundamentales.

También conviene comprobar si el atasco apareció después de instalar o actualizar algún plugin.

Si coincide claramente con un cambio reciente, esa correlación merece investigarse, aunque por sí sola no demuestra que el plugin sea responsable.

Action Scheduler puede influir en un wp-admin lento

Una cola problemática puede tener consecuencias más allá de las tareas que se retrasan.

Action Scheduler utiliza la base de datos y ejecuta procesos PHP. Si existe un volumen anormal de acciones, consultas pesadas o tareas fallando continuamente, puede aumentar la carga de la instalación.

Pero conviene evitar otro diagnóstico demasiado fácil:

wp-admin va lento → Action Scheduler es el culpable.

No necesariamente.

Un administrador lento también puede deberse a consultas de plugins, Heartbeat, autoload, llamadas a servicios externos, WooCommerce, cron, base de datos o recursos insuficientes del servidor.

Por eso tenemos una guía específica sobre qué comprobar cuando WordPress va rápido por fuera pero wp-admin es muy lento.

Si tienes ambos síntomas —wp-admin lento y miles de acciones atrasadas— sí existe una relación que merece comprobarse.

¿Conviene ejecutar manualmente las acciones pendientes?

Puede servir como prueba diagnóstica.

Si ejecutas una acción pendiente y:

  • termina correctamente;
  • tarda poco;
  • la cola comienza a reducirse;

el problema puede estar relacionado con la frecuencia con la que se está activando el procesamiento.

Si al ejecutarla:

  • genera un error;
  • tarda excesivamente;
  • consume muchos recursos;
  • vuelve a fallar;

el problema probablemente está en esa tarea o en aquello de lo que depende.

La propia interfaz de Action Scheduler permite ejecutar acciones pendientes manualmente.

Hazlo con unas pocas tareas representativas antes de intentar procesar miles de golpe.

¿Y si hay miles o decenas de miles de acciones?

En sitios grandes, procesar colas enormes desde peticiones web puede no ser la mejor opción.

Action Scheduler dispone de comandos específicos para WP-CLI y su propia documentación recomienda este método para colas grandes o tareas de larga duración, ya que evita algunas de las limitaciones que introduce una petición web normal.

Por ejemplo, permite procesar la cola mediante:

wp action-scheduler run

También puede limitarse el procesamiento por lotes, hooks o grupos.

Esto es útil para administradores y desarrolladores, pero hay una diferencia importante entre procesar una cola atrasada y resolver la causa por la que se atrasó.

Después de vaciarla hay que volver a observarla.

Si unas horas después vuelve a crecer al mismo ritmo, el problema continúa ahí.

¿Puedo borrar todas las acciones pendientes o fallidas?

No como primera medida.

Una acción pendiente existe porque algún componente de la web espera que ocurra algo.

Puede tratarse de una tarea prescindible, pero también de:

  • una renovación;
  • una actualización de pedido;
  • una sincronización;
  • un webhook;
  • un correo;
  • una operación de un plugin externo.

Borrar indiscriminadamente las acciones puede impedir que esos procesos terminen.

Con las acciones fallidas ocurre algo parecido. Limpiarlas puede resultar razonable una vez que has identificado el problema y sabes que ya no son necesarias, pero borrarlas no arregla la causa del fallo.

Y si el plugin responsable sigue activo y continúa generándolas, probablemente regresarán.

Tampoco empieces limpiando directamente las tablas de la base de datos

Otro consejo frecuente consiste en entrar en phpMyAdmin y vaciar las tablas utilizadas por Action Scheduler.

Es una medida mucho más agresiva y raramente debería ser el primer paso.

Antes debes saber:

  • qué acciones existen;
  • qué plugin las utiliza;
  • qué estados tienen;
  • si hay procesos actualmente en ejecución;
  • si las tareas pendientes siguen siendo necesarias.

Modificar directamente la base de datos sin entender estas relaciones puede convertir un problema de rendimiento en un problema funcional.

La limpieza de tablas puede formar parte de tareas de mantenimiento muy concretas, pero no debe confundirse con «optimizar WordPress». En cómo limpiar la base de datos de WordPress sin tocar código explicamos qué información suele acumularse y por qué conviene distinguir datos prescindibles de datos que todavía necesita algún plugin.

Qué comprobar, en orden

Si encuentras una cola anormalmente grande, este orden suele proporcionar bastante más información que empezar borrando:

1. Mira la antigüedad

¿Las acciones pendientes son de hace minutos, horas o varios días?

Una instantánea aislada dice poco. La tendencia dice mucho más.

2. Agrupa mentalmente por hook

Localiza qué nombres se repiten.

Si un hook representa la mayor parte de la cola, investiga primero ese componente.

3. Revisa las fallidas

Consulta sus registros y busca errores repetidos.

4. Identifica qué plugin genera el hook

No desactives media instalación a ciegas. Intenta establecer primero qué componente está relacionado.

5. Comprueba WP-Cron

Especialmente si muchas tareas diferentes están retrasadas simultáneamente.

6. Ejecuta una muestra manualmente

Te permitirá saber si las tareas pueden terminar o fallan al ejecutarse.

7. Observa recursos y errores PHP

CPU, memoria, procesos PHP, logs y base de datos pueden aportar información decisiva.

8. Revisa cambios recientes

Actualizaciones, nuevas integraciones, migraciones, importaciones o cambios de PHP.

Si el problema apareció después de que el hosting cambiase PHP, consulta también qué comprobar cuando tu hosting va a cambiar la versión de PHP.

9. Corrige la causa

Solo entonces tiene sentido limpiar las acciones antiguas que hayan quedado sin utilidad.

Cuando el problema no está en Action Scheduler

Hay una señal especialmente útil.

Si encuentras 10.000 tareas atrasadas pertenecientes a un plugin y, tras desactivarlo o corregir su configuración, dejan de generarse nuevas acciones, Action Scheduler probablemente no era la causa.

Era el mensajero.

Lo mismo sucede si WP-Cron está completamente detenido: Action Scheduler no puede procesar adecuadamente su trabajo porque el mecanismo que debe ponerlo en marcha no está funcionando.

El diagnóstico debe distinguir entre:

quién genera las tareas → quién las ejecuta → por qué no terminan.

Confundir esas tres cosas explica muchas de las soluciones que solo funcionan durante unas horas.

Qué relación tiene esto con las copias de seguridad

Las copias programadas son un buen ejemplo de por qué conviene comprobar los procesos automáticos de una instalación WordPress.

Puedes tener un plugin de backup correctamente configurado y descubrir meses después que sus tareas programadas no estaban ejecutándose como esperabas.

Por eso una copia no debería considerarse válida simplemente porque «el plugin está instalado».

Hay que comprobar también que realmente se genera y puede restaurarse. Lo explicamos con detalle en copias de seguridad en WordPress: la diferencia entre creer que las tienes y saber que funcionan.

Qué haría antes de tocar una tienda en producción

En una instalación WooCommerce activa, especialmente si genera ventas, seguiría esta secuencia:

  1. hacer una copia recuperable antes de cambios importantes;
  2. revisar pendientes y fallidas;
  3. identificar hooks y plugins implicados;
  4. comprobar WP-Cron;
  5. consultar logs PHP y del servidor;
  6. ejecutar solo algunas acciones representativas;
  7. comprobar si la cola vuelve a crecer;
  8. realizar las correcciones en staging cuando impliquen plugins, PHP o base de datos;
  9. verificar pedidos, emails, pagos, webhooks e integraciones después del cambio.

Es el mismo principio que recomendamos para actualizar WordPress sin romper una web en producción: primero entender dependencias y disponer de una forma fiable de volver atrás.

Una cola grande es un síntoma, no un diagnóstico

Encontrar miles de acciones programadas puede impresionar, pero el número por sí solo no explica qué ocurre.

La pregunta útil no es:

«¿Cómo borro las acciones de WooCommerce?»

Es:

«¿Qué proceso está generando estas acciones, por qué no se están ejecutando al ritmo esperado y qué dejaría de funcionar si simplemente las elimino?»

Esa diferencia evita muchas limpiezas inútiles y, sobre todo, permite encontrar problemas que de otro modo reaparecerían poco después.

Si tu WooCommerce acumula acciones pendientes, la administración se ha vuelto lenta o determinados procesos automáticos están fallando, conviene revisar el conjunto de la instalación. Una cola descontrolada puede estar relacionada con cron, plugins, PHP, base de datos o recursos del servidor.

En una web de empresa, este tipo de diagnóstico forma parte de un mantenimiento WordPress que no se limita a instalar actualizaciones: también implica comprobar que los procesos que deberían ejecutarse en segundo plano realmente lo hacen.

Autor/a:

Deja el primer comentario

Contenidos relacionados