Saltar al contenido

Queuety

El motor de flujos de trabajo WordPress.

Terminal
wp plugin install https://github.com/inline0/queuety/releases/latest/download/queuety.zip --activate

Última versión v0.22.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+

En la práctica

Un flujo de trabajo definido en PHP y el comando del trabajador que lo ejecuta.

Un flujo de trabajo de aprobación

El flujo de trabajo ejecuta un paso, espera 24 horas y luego se pausa en wait_for_approval() hasta que otro proceso envía la señal approval.

El retraso se guarda en la base de datos, por lo que se conserva tras reiniciar los trabajadores e implementar cambios; además, una señal enviada antes de tiempo queda registrada y se procesa cuando el flujo de trabajo llega a la espera. Al cancelar la ejecución, se llama al controlador on_cancel().

PHP
$workflow_id = Queuety::workflow( 'approval_flow' )
    ->then( SubmitRequestHandler::class )
    ->delay( hours: 24 )
    ->wait_for_approval()
    ->then( ProcessApprovalHandler::class )
    ->on_cancel( CleanupHandler::class )
    ->dispatch( [ 'request_id' => 99 ] );

// Later, from another process:
Queuety::signal( $workflow_id, 'approval', [ 'approved_by' => 'admin@example.com' ] );

Reclamación directa de MySQL

Cada trabajador se ejecuta en un proceso WP-CLI de larga duración y reclama tareas directamente desde MySQL con FOR UPDATE SKIP LOCKED.

Flujos de trabajo duraderos

Procesos de varios pasos con estado persistente que sobreviven a los tiempos de espera PHP, los bloqueos y los reintentos.

Máquinas de estados

Estado de larga duración basado en eventos con Queuety::machine(): defina estados y transiciones, envíe eventos y consulte la cronología.

Señales y aprobaciones

wait_for_signal(), wait_for_approval() y wait_for_input() pausan un flujo de trabajo hasta que llega una entrada externa.

Niveles de prioridad

Cuatro niveles, de baja a urgente. Dentro de una cola, las tareas de mayor prioridad se reclaman primero.

Limitación de tasa

Límites por controlador en una ventana móvil. Si un trabajador reclama una tarea con límite de velocidad, la devuelve y espera.

Tareas recurrentes

Programación basada en intervalos y cron. Analizador cron integrado, sin dependencias externas.

Pasos paralelos

Ejecute pasos del flujo de trabajo simultáneamente y espere a que todos terminen antes de avanzar.

Métricas y registros

Registro permanente en la base de datos con el rendimiento, la duración media y p95, y la tasa de errores de cada controlador.

Alternativa para WP-Cron

Sin acceso al shell, un evento WordPress cron que se ejecuta una vez por minuto inicia un trabajador de una sola ejecución para la cola predeterminada.

Middleware

Middleware para tareas al estilo onion que gestiona límites de velocidad, control de excepciones, unicidad, tiempos de espera y protección contra ejecuciones simultáneas.

PHP 8.2+

Enumeraciones, clases de solo lectura, expresiones match, promoción de constructores y atributos PHP.

Por qué Queuety

El estado reside en MySQL

Las filas de cola, el estado de los flujos de trabajo, los registros, las señales y los fragmentos transmitidos se guardan en MySQL, por lo que reiniciar un trabajador no hace perder ningún estado de orquestación. Cada límite entre pasos confirma en una sola transacción la actualización del estado, la finalización de la tarea y la siguiente tarea encolada.

Fuera de la solicitud de página

WP-Cron solo se ejecuta al visitar páginas, y una llamada a LLM de 60 segundos se interrumpe por el tiempo de espera de PHP de 30 segundos. Los trabajadores Queuety se ejecutan en un proceso WP-CLI de larga duración y recogen tareas sin esperar a que haya tráfico.

Límites de seguridad para las ejecuciones de agentes

for_each() con un modo de quórum, pasos de aprobación y límites como max_transitions() y max_state_bytes() mantienen las ejecuciones prolongadas de agentes dentro de límites definidos.

Se puede usar fuera de WordPress

El núcleo respaldado por la base de datos funciona en cualquier proceso PHP que pueda conectarse a la misma base de datos, así que otra aplicación puede enviar tareas, enviar señales y consultar el estado de los flujos de trabajo. Los activadores de acciones, el puente WP-Cron y los comandos WP-CLI siguen necesitando WordPress.

Comparación con

Cómo se relaciona Queuety con los programadores y motores de flujos de trabajo que los desarrolladores de WordPress ya conocen.

Queuety en comparación con otras herramientas
WP-Cron Ideal paraIntegrado en WordPress, no necesita acceso al programador del sistema en alojamiento compartido; si una tarea no se ejecuta a la hora prevista, se ejecuta en la siguiente carga de página en vez de descartarse. Diferencia con QueuetyQueuety workers se ejecuta de forma independiente del tráfico del sitio y necesita un proceso wp queuety work de larga duración. Su puente WP-Cron convierte los eventos recurrentes en programaciones, pero aún no ejecuta sus callbacks de hook, así que WP-Cron sigue encargándose de ellos.
Action Scheduler Ideal paraDiseñado para distribuirse dentro de complementos y temas sin necesidad de acceso al servidor, procesa cada mes millones de pagos de Suscripciones y webhooks de WooCommerce, y registra cada acción en una interfaz de administración. Diferencia con QueuetyAction Scheduler ejecuta una función de enlace más adelante, como un do_action() retrasado. Queuety añade flujos de trabajo de varios pasos cuyo estado persiste entre pasos, esperas de señales y aprobaciones, y máquinas de estados; se inspeccionan mediante comandos WP-CLI como wp queuety workflow timeline.
Temporal Ideal paraUna plataforma de ejecución duradera: un historial de eventos registra cada paso de un flujo de trabajo, de modo que la ejecución se reanuda desde el último evento registrado tras bloqueos o interrupciones; también se ofrece Temporal Cloud como alternativa a alojar el servicio por cuenta propia. Diferencia con QueuetyUn servicio de Temporal es un servidor Go y una base de datos que se ejecutan junto a la aplicación. Queuety guarda su estado en tablas MySQL mediante la conexión a la base de datos WordPress y ejecuta trabajadores con WP-CLI.

Preguntas y respuestas

Respuestas breves de la documentación de Queuety.

Instale el complemento, inicie un trabajador y siga las guías, desde su primera tarea hasta los flujos de trabajo de aprobación y las máquinas de estados.