Pular para o conteúdo

Queuety

O mecanismo de fluxos de trabalho WordPress.

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

Versão mais recente v0.22.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+

Na prática

Um fluxo de trabalho definido em PHP e o comando do worker que o executa.

Um fluxo de aprovação

O fluxo de trabalho executa uma etapa, aguarda 24 horas e então pausa em wait_for_approval() até que outro processo envie o sinal approval.

O atraso é armazenado no banco de dados, então resiste a reinicializações de workers e implantações; um sinal enviado antecipadamente também é registrado e recebido quando o fluxo de trabalho chega à espera. O cancelamento da execução chama o handler 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' ] );

Reivindicações diretas de MySQL

Cada worker é executado em um processo WP-CLI de longa duração e reivindica tarefas diretamente de MySQL com FOR UPDATE SKIP LOCKED.

Fluxos de trabalho duráveis

Processos com várias etapas e estado persistente, que resistem a timeouts, falhas e novas tentativas de PHP.

Máquinas de estado

Estado orientado a eventos e de longa duração com Queuety::machine(): defina estados e transições, envie eventos e consulte a linha do tempo.

Sinais e aprovações

wait_for_signal(), wait_for_approval() e wait_for_input() pausam um fluxo de trabalho até a chegada de entrada externa.

Níveis de prioridade

Quatro níveis, de Baixa a Urgente. Em uma fila, as tarefas de prioridade mais alta são reivindicadas primeiro.

Limitação de taxa

Limites por handler em uma janela deslizante. Um worker que reivindica uma tarefa limitada por taxa a devolve à fila e aguarda.

Tarefas recorrentes

Agendamento por intervalo e com base em cron. Analisador cron integrado, sem dependências externas.

Etapas paralelas

Execute etapas do fluxo de trabalho simultaneamente e aguarde a conclusão de todas antes de avançar.

Métricas e registros

Registro permanente no banco de dados com taxa de transferência, duração média e p95 e taxa de erros por handler.

Alternativa a WP-Cron

Sem acesso ao shell, um evento cron WordPress executado uma vez por minuto inicia um worker de execução única para a fila padrão.

Middleware

Middleware de tarefas em camadas para limites de taxa, controle de exceções, exclusividade, timeouts e proteção contra sobreposição.

PHP 8.2+

Enums, classes readonly, expressões match, promoção do construtor e atributos PHP.

Por que Queuety

O estado fica em MySQL

As linhas da fila, o estado dos fluxos de trabalho, os registros, os sinais e os blocos transmitidos são armazenados em MySQL, então uma reinicialização do worker não perde nenhum estado de orquestração. Cada limite entre etapas confirma a atualização do estado, a conclusão da tarefa e o enfileiramento da próxima etapa em uma única transação.

Fora das requisições de página

WP-Cron só é acionado em visitas a páginas, e uma chamada de LLM de 60 segundos é encerrada por um timeout de PHP de 30 segundos. Workers Queuety são executados em processos WP-CLI de longa duração e recebem tarefas sem esperar por tráfego.

Controles para execuções de agentes

for_each() com modo de quórum, etapas de aprovação e limites como max_transitions() e max_state_bytes() mantêm execuções longas de agentes dentro de limites definidos.

Utilizável fora do WordPress

O núcleo baseado em banco de dados é executado em qualquer processo PHP que possa abrir o mesmo banco de dados; assim, outro aplicativo pode enviar tarefas, emitir sinais e consultar o status do fluxo de trabalho. Acionadores de ações, a ponte WP-Cron e os comandos WP-CLI ainda precisam de WordPress.

Comparação com

Como Queuety se relaciona com os agendadores e mecanismos de fluxo de trabalho que os desenvolvedores WordPress já conhecem.

Queuety em comparação com outras ferramentas
WP-Cron Ideal paraIntegrado ao WordPress, não precisa de acesso ao agendador do sistema em hospedagem compartilhada; uma tarefa que perde o horário é executada na próxima visita à página, em vez de ser descartada. Diferenças em relação a QueuetyWorkers Queuety são executados independentemente do tráfego do site e precisam de um processo wp queuety work de longa duração. A ponte WP-Cron converte eventos recorrentes em agendamentos, mas ainda não executa os callbacks dos hooks, então WP-Cron continua responsável por eles.
Action Scheduler Ideal paraFeito para distribuição em plugins e temas sem exigir acesso ao servidor, processa milhões de pagamentos de assinaturas e webhooks de WooCommerce todos os meses e registra cada ação em uma interface de administração. Diferenças em relação a QueuetyAction Scheduler executa um hook posteriormente, como um do_action() com atraso. Queuety adiciona fluxos de trabalho com várias etapas cujo estado persiste entre elas, esperas por sinais e aprovações e máquinas de estado. É possível inspecioná-los com comandos WP-CLI, como wp queuety workflow timeline.
Temporal Ideal paraUma plataforma de execução durável: um Histórico de eventos registra cada etapa do fluxo de trabalho, permitindo retomar uma execução do último evento registrado após falhas ou interrupções; o Temporal Cloud é oferecido como alternativa a hospedar o serviço por conta própria. Diferenças em relação a QueuetyUm serviço Temporal é um servidor Go com um banco de dados, executado junto ao seu aplicativo. Queuety mantém o estado em tabelas MySQL na conexão de banco de dados WordPress e executa workers por meio de WP-CLI.

Perguntas e respostas

Respostas curtas da documentação do Queuety.

Instale o plugin, inicie um worker e siga os guias, da sua primeira tarefa aos fluxos de aprovação e às máquinas de estado.