Към съдържанието

Queuety

Работен процес с машина WordPress.

Терминал
wp plugin install https://github.com/inline0/queuety/releases/latest/download/queuety.zip --activate

Последна версия v0.22.0 GPL-2.0-or-later WordPress 6.4+, PHP 8.2+

На практика

Работен процес, дефиниран в PHP, и командата за работник, която го изпълнява.

Работен процес за одобрение

Работният процес изпълнява стъпка, изчаква 24 часа, след което спира на wait_for_approval(), докато друг процес не изпрати сигнала approval.

Забавянето се съхранява в базата данни, така че се запазва при рестартиране на работниците и внедряване на нови версии. Изпратеният предварително сигнал се записва и получава, когато работният процес стигне до изчакването. Отмяната на изпълнението извиква обработчика 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' ] );

Директно получаване на заявки MySQL

Всеки работник работи в дълготраен процес WP-CLI и получава задачи директно от MySQL с FOR UPDATE SKIP LOCKED.

Надеждни работни процеси

Многоетапни процеси с устойчиво състояние, което преживява изтичане на време PHP, сривове и повторни опити.

Машини на състоянията

Дълготрайно състояние, задвижвано от събития, с Queuety::machine(): дефинирайте състояния и преходи, изпращайте събития и преглеждайте хронологията.

Сигнали и одобрения

wait_for_signal(), wait_for_approval() и wait_for_input() поставят работния процес на пауза до получаване на външна информация.

Нива на приоритет

Четири нива от нисък до спешен. В рамките на една опашка задачите с по-висок приоритет се получават първи.

Ограничаване на честотата

Ограничения за всеки обработчик в плъзгащ се времеви прозорец. Работник, който получи задача с ограничена честота, я връща и изчаква.

Повтарящи се задачи

Планиране по интервал и въз основа на cron. Вграден парсер за cron без външни зависимости.

Паралелни стъпки

Изпълнявайте стъпките на работния процес едновременно и изчакайте завършването на всички, преди да продължите.

Метрики и журнал

Постоянен журнал в базата данни с пропускателна способност, средна продължителност и p95, както и честота на грешки за всеки обработчик.

Резервен механизъм WP-Cron

Без достъп до обвивката, събитие cron WordPress, изпълнявано веднъж в минута, стартира еднократен работник за опашката по подразбиране.

Междинен софтуер

Междинен софтуер за задачи с onion модел, който осигурява ограничаване на честотата, ограничаване на изключенията, уникалност, времеви ограничения и защита от припокриване.

PHP 8.2+

Перечислими типове, класове readonly, изрази match, промотиране на конструктора и атрибути PHP.

Защо Queuety

Състоянието се съхранява в MySQL

Редовете на опашката, състоянието на работния процес, журналите, сигналите и поточно предаваните части се съхраняват в MySQL, така че рестартирането на работник не води до загуба на състоянието на оркестрацията. На границата между стъпките актуализацията на състоянието, завършването на задачата и добавянето на следващата задача към опашката се потвърждават в една транзакция.

Извън заявката за страницата

WP-Cron се изпълнява само при посещения на страници, а 60-секунден LLM извикващ процес бива прекратен от изчакване PHP след 30 секунди. Работниците Queuety се изпълняват в дълготраен процес WP-CLI и поемат задачи, без да чакат трафик.

Ограничения за изпълненията на агенти

for_each() с режим на кворум, прагове за одобрение и ограничения като max_transitions() и max_state_bytes() държат дългите изпълнения на агенти в определени граници.

Работи и извън WordPress

Ядрото, базирано на база данни, работи във всеки процес PHP, който може да отвори същата база данни, така че друго приложение може да стартира задачи, да изпраща сигнали и да чете състоянието на работните процеси. Задействанията на действия, мостът WP-Cron и командите WP-CLI все още изискват WordPress.

Сравнение с

Как Queuety се вписва сред планировчиците и машините за работни процеси, познати на разработчиците на WordPress.

Queuety в сравнение с други инструменти
WP-Cron Подходящ заВграден е в WordPress и не изисква достъп до системния планировчик при споделен хостинг. Ако дадена задача пропусне планирания си час, тя се изпълнява при следващото зареждане на страница, вместо да бъде пропусната. Разлики спрямо QueuetyРаботниците Queuety се изпълняват независимо от трафика на сайта и изискват дълготраен работен процес wp queuety work. Мостът WP-Cron превръща повтарящите се събития в графици, но все още не изпълнява свързаните с тях обратни извиквания на куки, така че WP-Cron продължава да отговаря за тях.
Action Scheduler Подходящ заСъздаден е за разпространение в плъгини и теми без нужда от достъп до сървъра. Всеки месец обработва милиони плащания за абонаменти и уебхукове за WooCommerce, а всяко действие се записва в административен интерфейс. Разлики спрямо QueuetyAction Scheduler изпълнява кука по-късно, например забавено do_action(). Queuety добавя многоетапни работни процеси със състояние, което се запазва между стъпките, изчаквания за сигнали и одобрения, както и машини на състоянията. Можете да ги проверявате с командите WP-CLI, например wp queuety workflow timeline.
Temporal Подходящ заПлатформа за надеждно изпълнение: журналът на събитията записва всяка стъпка от работния процес, така че изпълнението продължава от последното записано събитие след срив или прекъсване. Temporal Cloud се предлага като алтернатива на самостоятелното хостване на услугата. Разлики спрямо QueuetyTemporal Service представлява сървър на Go и база данни, работещи заедно с приложението ви. Queuety съхранява състоянието си в таблици MySQL във връзката с базата данни WordPress и изпълнява работниците чрез WP-CLI.

Въпроси и отговори

Кратки отговори от документацията на Queuety.

Инсталирайте плъгина, стартирайте работник и следвайте ръководствата — от първата си задача до работни потоци за одобрение и машини на състоянията.