Μετάβαση στο περιεχόμενο

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 και η εντολή worker που την εκτελεί.

Μια ροή εργασίας έγκρισης

Η ροή εργασίας εκτελεί ένα βήμα, περιμένει 24 ώρες και, στη συνέχεια, τίθεται σε παύση στο wait_for_approval() μέχρι μια άλλη διεργασία να στείλει το σήμα approval.

Η καθυστέρηση αποθηκεύεται στη βάση δεδομένων, επομένως διατηρείται μετά από επανεκκινήσεις worker και αναπτύξεις. Ένα σήμα που αποστέλλεται νωρίτερα καταγράφεται και λαμβάνεται υπόψη όταν η ροή εργασίας φτάσει στην αναμονή. Η ακύρωση της εκτέλεσης καλεί τον χειριστή 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

Κάθε worker εκτελείται ως διεργασία WP-CLI μεγάλης διάρκειας και αναλαμβάνει εργασίες απευθείας από το MySQL με FOR UPDATE SKIP LOCKED.

Ανθεκτικές ροές εργασίας

Διαδικασίες πολλών βημάτων με μόνιμη κατάσταση που επιβιώνουν από χρονικά όρια PHP, καταρρεύσεις και επαναλήψεις.

Μηχανές καταστάσεων

Κατάσταση μεγάλης διάρκειας, βασισμένη σε συμβάντα, με Queuety::machine(): ορίστε καταστάσεις και μεταβάσεις, στείλτε συμβάντα και διαβάστε το χρονολόγιο.

Σήματα και εγκρίσεις

Τα wait_for_signal(), wait_for_approval() και wait_for_input() θέτουν σε παύση μια ροή εργασίας μέχρι να φτάσει εξωτερική είσοδος.

Επίπεδα προτεραιότητας

Τέσσερα επίπεδα, από Χαμηλή έως Επείγουσα. Σε κάθε ουρά, οι εργασίες υψηλότερης προτεραιότητας αναλαμβάνονται πρώτες.

Περιορισμός ρυθμού

Όρια ανά χειριστή σε κυλιόμενο χρονικό παράθυρο. Ένας worker που αναλαμβάνει εργασία με περιορισμό ρυθμού την επιστρέφει στην ουρά και περιμένει.

Επαναλαμβανόμενες εργασίες

Προγραμματισμός βάσει διαστημάτων και cron. Ενσωματωμένος αναλυτής cron χωρίς εξωτερικές εξαρτήσεις.

Παράλληλα βήματα

Εκτελέστε τα βήματα της ροής εργασίας ταυτόχρονα και περιμένετε να ολοκληρωθούν όλα πριν συνεχίσετε.

Μετρήσεις & καταγραφή

Μόνιμο αρχείο καταγραφής στη βάση δεδομένων με ρυθμό διεκπεραίωσης, μέση διάρκεια και διάρκεια p95, καθώς και ποσοστό σφαλμάτων ανά χειριστή.

Εφεδρική λειτουργία WP-Cron

Χωρίς πρόσβαση σε κέλυφος, ένα συμβάν cron WordPress που εκτελείται μία φορά το λεπτό εκκινεί έναν worker μίας εκτέλεσης για την προεπιλεγμένη ουρά.

Ενδιάμεσο λογισμικό

Ενδιάμεσο λογισμικό εργασιών σε μορφή onion για περιορισμούς ρυθμού, περιορισμό εξαιρέσεων, μοναδικότητα, χρονικά όρια και προστασία από επικαλύψεις.

PHP 8.2+

Enums, κλάσεις readonly, εκφράσεις match, προώθηση κατασκευαστή και χαρακτηριστικά PHP.

Γιατί Queuety

Η κατάσταση βρίσκεται στο MySQL

Οι γραμμές ουράς, η κατάσταση ροής εργασίας, τα αρχεία καταγραφής, τα σήματα και τα τμήματα ροής αποθηκεύονται στο MySQL, επομένως η επανεκκίνηση ενός worker δεν χάνει καμία κατάσταση ενορχήστρωσης. Σε κάθε όριο βήματος, η ενημέρωση της κατάστασης, η ολοκλήρωση της εργασίας και η προσθήκη της επόμενης στην ουρά καταχωρίζονται σε μία συναλλαγή.

Εκτός αιτήματος σελίδας

Το WP-Cron ενεργοποιείται μόνο κατά τις επισκέψεις σε σελίδες και μια κλήση LLM διάρκειας 60 δευτερολέπτων διακόπτεται από χρονικό όριο PHP 30 δευτερολέπτων. Οι workers Queuety εκτελούνται σε διεργασία WP-CLI μεγάλης διάρκειας και αναλαμβάνουν εργασίες χωρίς να περιμένουν επισκεψιμότητα.

Δικλίδες ασφαλείας για εκτελέσεις agent

Τα for_each() με λειτουργία απαρτίας, πύλες έγκρισης και όρια όπως max_transitions() και max_state_bytes() διατηρούν τις εκτελέσεις agent μεγάλης διάρκειας εντός καθορισμένων ορίων.

Χρήση εκτός WordPress

Ο πυρήνας που βασίζεται στη βάση δεδομένων εκτελείται σε οποιαδήποτε διεργασία PHP που μπορεί να συνδεθεί στην ίδια βάση δεδομένων, επομένως μια άλλη εφαρμογή μπορεί να αποστέλλει εργασίες, να στέλνει σήματα και να διαβάζει την κατάσταση ροής εργασίας. Οι ενεργοποιητές ενεργειών, η γέφυρα WP-Cron και οι εντολές WP-CLI εξακολουθούν να απαιτούν WordPress.

Σε σύγκριση με

Πώς σχετίζεται το Queuety με τους προγραμματιστές και τις μηχανές ροών εργασίας WordPress που ήδη γνωρίζουν.

Το Queuety σε σύγκριση με άλλα εργαλεία
WP-Cron Κατάλληλο γιαΕνσωματωμένο στο WordPress, δεν χρειάζεται πρόσβαση στον προγραμματιστή του συστήματος σε κοινόχρηστη φιλοξενία, ενώ μια εργασία που δεν εκτελείται στην ώρα της εκτελείται στην επόμενη φόρτωση σελίδας αντί να απορρίπτεται. Διαφορά με το QueuetyΟι workers του Queuety λειτουργούν ανεξάρτητα από την επισκεψιμότητα του ιστότοπου και χρειάζονται μια διεργασία wp queuety work που εκτελείται συνεχώς. Η γέφυρά του WP-Cron μετατρέπει τα επαναλαμβανόμενα συμβάντα σε προγραμματισμένες εργασίες, αλλά δεν εκτελεί ακόμη τα callbacks των hook τους, οπότε το WP-Cron εξακολουθεί να τα διαχειρίζεται.
Action Scheduler Κατάλληλο γιαΣχεδιασμένο για διανομή μέσα σε πρόσθετα και θέματα χωρίς να απαιτείται πρόσβαση στον διακομιστή. Επεξεργάζεται εκατομμύρια πληρωμές συνδρομών και webhook για το WooCommerce κάθε μήνα και καταγράφει κάθε ενέργεια σε διεπαφή διαχείρισης. Διαφορά με το QueuetyΤο Action Scheduler εκτελεί ένα hook αργότερα, όπως ένα καθυστερημένο do_action(). Το Queuety προσθέτει ροές εργασίας πολλών βημάτων με κατάσταση που διατηρείται ανάμεσα στα βήματα, αναμονές για σήματα και εγκρίσεις, καθώς και μηχανές καταστάσεων. Μπορείτε να τις επιθεωρείτε με εντολές WP-CLI, όπως wp queuety workflow timeline.
Temporal Κατάλληλο γιαΠλατφόρμα ανθεκτικής εκτέλεσης: ένα ιστορικό συμβάντων καταγράφει κάθε βήμα μιας ροής εργασίας, ώστε η εκτέλεση να συνεχίζεται από το τελευταίο καταγεγραμμένο συμβάν μετά από κατάρρευση ή διακοπή λειτουργίας. Το Temporal Cloud προσφέρεται ως εναλλακτική λύση στη φιλοξενία της υπηρεσίας από εσάς. Διαφορά με το QueuetyΜια υπηρεσία Temporal είναι ένας διακομιστής Go μαζί με μια βάση δεδομένων που εκτελείται δίπλα στην εφαρμογή σας. Το Queuety διατηρεί την κατάστασή του σε πίνακες MySQL στη σύνδεση βάσης δεδομένων WordPress και εκτελεί workers μέσω του WP-CLI.

Ερωτήσεις και απαντήσεις

Σύντομες απαντήσεις από την τεκμηρίωση του Queuety.

Εγκαταστήστε το πρόσθετο, εκκινήστε έναν worker και ακολουθήστε τους οδηγούς από την πρώτη εργασία σας έως τις ροές εργασίας εγκρίσεων και τις μηχανές καταστάσεων.