PHP API
Όλα στο Queuety είναι προσβάσιμα μέσω της στατικής κλάσης Queuety\Queuety. Είναι το μοναδικό σημείο εισόδου για την αποστολή εργασιών, τη δημιουργία ροών εργασιών, τον έλεγχο μηχανών καταστάσεων, τη διαχείριση ουρών και την πρόσβαση σε εσωτερικά υποσυστήματα.
use Queuety\Queuety;
Πρόσβαση στον αυτόνομο πυρήνα
Ο χρόνος εκτέλεσης του Queuety, που βασίζεται σε DB, μπορεί να αρχικοποιηθεί εκτός του WordPress.
Αυτή η αυτόνομη διαδρομή αφορά τον πυρήνα ενορχήστρωσης:
- εργασίες και workers (οι ομάδες workers χρειάζονται επίσης τις σταθερές
DB_HOST,DB_NAME,DB_USERκαιDB_PASSWORD· δείτε παρακάτω) - ροές εργασιών και σήματα
- μηχανές καταστάσεων και συμβάντα
- τεχνουργήματα, αρχεία καταγραφής, μετρήσεις και χρονοδιαγράμματα
Δεν αντικαθιστά τον προσαρμογέα WordPress. Τα Queuety::on_action(),
replace_wp_cron(), η αρχικοποίηση του πρόσθετου και η πραγματική διαδρομή
καταχώρισης wp queuety ... εξακολουθούν να απαιτούν το WordPress.
Queuety::init( Connection $conn )
Αρχικοποιήστε το Queuety με απευθείας σύνδεση που βασίζεται σε DB.
use Queuety\Connection;
use Queuety\Queuety;
$conn = new Connection(
host: '127.0.0.1:3306',
dbname: 'wordpress',
user: 'root',
password: 'secret',
prefix: 'wp_',
);
Queuety::init( $conn );
Το προαιρετικό όρισμα table_prefix αλλάζει το τμήμα Queuety των ονομάτων των πινάκων χρόνου εκτέλεσης ανά σύνδεση:
$conn = new Connection(
host: '127.0.0.1:3306',
dbname: 'wordpress',
user: 'root',
password: 'secret',
prefix: 'wp_',
table_prefix: 'themequeue_',
);
Έτσι, πίνακες όπως ο queuety_jobs αντιστοιχίζονται στον wp_themequeue_jobs.
Queuety::ensure_schema()
Βεβαιωθείτε ότι υπάρχουν οι πίνακες χρόνου εκτέλεσης του Queuety για την ενεργή σύνδεση.
Queuety::init( $conn );
Queuety::ensure_schema();
Για το πλήρες μοντέλο και το όριο του WordPress, δείτε την ενότητα Αυτόνομη χρήση.
Εργασίες
Queuety::dispatch( $handler, $payload )
Αποστείλετε μια εργασία. Δέχεται είτε μια συμβολοσειρά ονόματος χειριστή είτε μια παρουσία Contracts\Job. Επιστρέφει ένα builder PendingJob για αλυσιδωτή προσθήκη επιλογών.
// Handler name + payload (original API)
Queuety::dispatch( 'send_email', [ 'to' => 'user@example.com' ] );
// Contracts\Job instance (v0.6.0+)
Queuety::dispatch( new SendEmailJob( to: 'user@example.com' ) );
// With options
Queuety::dispatch( 'send_email', [ 'to' => 'user@example.com' ] )
->on_queue( 'emails' )
->with_priority( Priority::High )
->delay( 300 )
->max_attempts( 5 )
->rate_limit( 10, 60 )
->unique()
->after( $other_job_id );
// Get the job ID
$job_id = Queuety::dispatch( 'send_email', $payload )->id();
Όταν περνάτε μια παρουσία Contracts\Job, ο σειριοποιητής εξάγει το FQCN ως όνομα χειριστή και τις δημόσιες ιδιότητες ως περιεχόμενο. Η παράμετρος $payload αγνοείται όταν το $handler είναι παρουσία Job.
Μέθοδοι PendingJob
| Μέθοδος | Περιγραφή |
|---|---|
on_queue( string $queue ) |
Ορίζει την ουρά προορισμού |
with_priority( Priority $priority ) |
Ορίζει το επίπεδο προτεραιότητας |
delay( int $seconds ) |
Καθυστέρηση πριν γίνει διαθέσιμη η εργασία |
max_attempts( int $max ) |
Μέγιστος αριθμός προσπαθειών επανάληψης |
rate_limit( int $max, int $window ) |
Όριο ρυθμού: μέγιστος αριθμός εκτελέσεων ανά δευτερόλεπτο χρονικού παραθύρου |
unique() |
Αποτρέπει διπλές αποστολές |
after( int $job_id ) |
Περιμένει πρώτα να ολοκληρωθεί άλλη εργασία |
concurrency_group( string $group, int $limit ) |
Τοποθετεί την εργασία σε κοινόχρηστη ομάδα αποδοχής worker |
cost_units( int $units ) |
Συνδέει μεταδεδομένα σχετικού κόστους εκτέλεσης με την αποστολή |
id() |
Επιβάλλει την αποστολή και επιστρέφει το αναγνωριστικό της εργασίας |
Τα concurrency_group() και cost_units() τροφοδοτούν το ευρύτερο μοντέλο Διαχείρισης πόρων, ώστε η ίδια αποστολή να μπορεί να συμμετέχει σε όρια ταυτόχρονης εκτέλεσης βάσει πλήθους, σταθμισμένους προϋπολογισμούς ουράς ή παρόχου και ευρετικές αποδοχής worker.
Queuety::dispatch_sync( $handler, $payload )
Εκτελεί μια εργασία συγχρονισμένα στην τρέχουσα διεργασία, χωρίς να την προσθέτει στην ουρά.
// With a Job instance
Queuety::dispatch_sync( new SendEmailJob( to: 'user@example.com', subject: 'Hi', body: 'Hello' ) );
// With a handler name and payload
Queuety::dispatch_sync( 'send_email', [ 'to' => 'user@example.com' ] );
Η μέθοδος handle() της εργασίας καλείται απευθείας. Δεν δημιουργείται εγγραφή στη βάση δεδομένων, δεν συμμετέχει worker και δεν εφαρμόζεται ενδιάμεσο λογισμικό.
Queuety::batch( $jobs )
Αποστέλλει πολλές εργασίες με μία εισαγωγή INSERT πολλών γραμμών.
$job_ids = Queuety::batch( [
[ 'handler' => 'send_email', 'payload' => [ 'to' => 'a@example.com' ], 'queue' => 'emails' ],
[ 'handler' => 'send_email', 'payload' => [ 'to' => 'b@example.com' ], 'priority' => 2 ],
] );
Queuety::create_batch( $jobs )
Δημιουργήστε ένα BatchBuilder για την αποστολή μιας ομάδας εργασιών με συναρτήσεις επανάκλησης και παρακολούθηση προόδου. Για όλες τις λεπτομέρειες, δείτε την ενότητα Ομαδοποίηση.
$batch = Queuety::create_batch( [
new ImportUsersJob( $chunk_1 ),
new ImportUsersJob( $chunk_2 ),
] )
->name( 'Import users' )
->then( ImportCompleteHandler::class )
->catch( ImportFailedHandler::class )
->finally( ImportCleanupHandler::class )
->allow_failures()
->on_queue( 'imports' )
->dispatch();
Μέθοδοι BatchBuilder
| Μέθοδος | Επιστρέφει | Περιγραφή |
|---|---|---|
name( string $name ) |
self |
Ορίζει όνομα για την ομάδα |
on_queue( string $queue ) |
self |
Ορίζει την ουρά για όλες τις εργασίες της ομάδας |
then( string $handler_class ) |
self |
Χειριστής που καλείται όταν η ομάδα ολοκληρωθεί με επιτυχία |
catch( string $handler_class ) |
self |
Χειριστής που καλείται όταν αποτύχει η πρώτη εργασία της ομάδας |
finally( string $handler_class ) |
self |
Χειριστής που καλείται όταν ολοκληρωθεί η ομάδα (με επιτυχία ή αποτυχία) |
allow_failures() |
self |
Επιτρέπει την εκτέλεση της συνάρτησης επανάκλησης then ακόμη και σε περίπτωση αποτυχίας |
dispatch() |
Batch |
Δημιουργεί την εγγραφή της ομάδας και όλες τις εργασίες· επιστρέφει το αντικείμενο τιμής Batch |
Queuety::find_batch( $id )
Βρείτε μια ομάδα βάσει αναγνωριστικού. Επιστρέφει αντικείμενο τιμής Batch ή null.
$batch = Queuety::find_batch( $batch_id );
if ( null !== $batch ) {
echo $batch->progress() . '% complete';
}
Έλεγχος worker
Queuety::run_worker( $queue = 'default', $once = false )
Εκτελεί απευθείας έναν βρόχο worker.
Queuety::run_worker( 'default' );
Queuety::run_worker( 'critical,default', true );
Queuety::run_worker_pool( $workers, $queue = 'default' )
Εκτελεί απευθείας μια ομάδα worker σταθερού μεγέθους. Απαιτεί τις επεκτάσεις pcntl και posix. Η ομάδα διαβάζει τις σταθερές WordPress DB_HOST, DB_NAME, DB_USER και DB_PASSWORD για τις θυγατρικές συνδέσεις της (μόνο τα προθέματα των πινάκων προέρχονται από τη σύνδεση που αρχικοποιήθηκε), γι’ αυτό ορίστε τις όταν εκτελείτε μια ομάδα εκτός του WordPress (#5).
Queuety::run_worker_pool( 4, 'providers' );
Queuety::run_auto_scaling_worker_pool( $min_workers, $max_workers, $queue = 'default' )
Εκτελεί απευθείας μια προσαρμοστική ομάδα worker. Ισχύουν οι ίδιες απαιτήσεις με το run_worker_pool().
Queuety::run_auto_scaling_worker_pool( 2, 6, 'providers' );
Αντικείμενο τιμής Batch
| Μέθοδος/Ιδιότητα | Τύπος | Περιγραφή |
|---|---|---|
$id |
int |
Αναγνωριστικό ομάδας |
$name |
string|null |
Προαιρετικό όνομα ομάδας |
$total_jobs |
int |
Συνολικός αριθμός εργασιών στην ομάδα |
$pending_jobs |
int |
Εργασίες που εκκρεμούν ακόμη |
$failed_jobs |
int |
Αριθμός αποτυχημένων εργασιών |
$failed_job_ids |
array |
Αναγνωριστικά αποτυχημένων εργασιών |
$created_at |
DateTimeImmutable |
Πότε δημιουργήθηκε η ομάδα |
$finished_at |
DateTimeImmutable|null |
Πότε ολοκληρώθηκε η ομάδα |
$cancelled_at |
DateTimeImmutable|null |
Πότε ακυρώθηκε η ομάδα |
progress() |
int |
Ποσοστό ολοκλήρωσης (0-100) |
finished() |
bool |
Αν έχει ολοκληρωθεί η ομάδα |
has_failures() |
bool |
Αν απέτυχε κάποια εργασία |
cancelled() |
bool |
Αν ακυρώθηκε η ομάδα |
Queuety::chain( $jobs )
Δημιουργήστε ένα ChainBuilder για διαδοχική εκτέλεση εργασιών. Κάθε εργασία εξαρτάται από την επιτυχή ολοκλήρωση της προηγούμενης.
$first_job_id = Queuety::chain( [
new FetchDataJob( $url ),
new ProcessDataJob(),
new NotifyCompleteJob(),
] )
->on_queue( 'pipeline' )
->catch( ChainFailedHandler::class )
->dispatch();
Μέθοδοι ChainBuilder
| Μέθοδος | Επιστρέφει | Περιγραφή |
|---|---|---|
on_queue( string $queue ) |
self |
Ορίζει την ουρά για όλες τις εργασίες της αλυσίδας |
catch( string $handler_class ) |
self |
Χειριστής που καλείται όταν οποιαδήποτε εργασία της αλυσίδας θαφτεί οριστικά |
dispatch() |
int |
Δημιουργεί όλες τις εργασίες με διαδοχικές εξαρτήσεις· επιστρέφει το αναγνωριστικό της πρώτης εργασίας |
Queuety::retry( $job_id )
Επαναλαμβάνει μια συγκεκριμένη εργασία. Την επαναφέρει στην κατάσταση pending.
Queuety::retry( 42 );
Queuety::retry_buried()
Επαναλαμβάνει όλες τις θαμμένες εργασίες. Επιστρέφει τον αριθμό των εργασιών που επαναλήφθηκαν.
$count = Queuety::retry_buried();
Queuety::purge( $older_than_days )
Εκκαθαρίζει τις ολοκληρωμένες εργασίες. Επιστρέφει τον αριθμό των εργασιών που εκκαθαρίστηκαν.
$count = Queuety::purge(); // uses QUEUETY_RETENTION_DAYS
$count = Queuety::purge( 30 ); // purge jobs older than 30 days
Ουρές
Queuety::stats( $queue )
Λαμβάνει τα πλήθη εργασιών ομαδοποιημένα ανά κατάσταση.
$stats = Queuety::stats(); // all queues
$stats = Queuety::stats( 'emails' ); // specific queue
// ['pending' => 12, 'processing' => 3, 'completed' => 150, 'failed' => 2, 'buried' => 1]
Queuety::buried( $queue )
Λαμβάνει όλες τις θαμμένες εργασίες.
$jobs = Queuety::buried();
$jobs = Queuety::buried( 'emails' );
Queuety::pause( $queue )
Παύει μια ουρά ώστε να την παραλείπουν οι workers.
Queuety::pause( 'emails' );
Queuety::resume( $queue )
Συνεχίζει μια ουρά που βρίσκεται σε παύση.
Queuety::resume( 'emails' );
Queuety::is_paused( $queue )
Ελέγχει αν μια ουρά βρίσκεται σε παύση.
if ( Queuety::is_paused( 'emails' ) ) {
// Queue is paused
}
Ροές εργασιών
Queuety::workflow( $name )
Ξεκινήστε να δημιουργείτε μια ροή εργασιών. Επιστρέφει ένα WorkflowBuilder.
$workflow_id = Queuety::workflow( 'generate_report' )
->then( FetchDataHandler::class )
->then( CallLLMHandler::class )
->then( FormatOutputHandler::class )
->dispatch( [ 'user_id' => 42 ] );
Μέθοδοι WorkflowBuilder
| Μέθοδος | Περιγραφή |
|---|---|
then( string $handler_class, ?string $name = null ) |
Προσθέτει ένα διαδοχικό βήμα. Προαιρετικό όνομα για διακλάδωση υπό συνθήκη. |
parallel( array $handler_classes ) |
Προσθέτει μια ομάδα παράλληλων βημάτων. |
for_each( string $items_key, string $handler_class, ?string $result_key = null, ForEachMode $mode = ForEachMode::All, ?int $quorum = null, ?string $reducer_class = null, ?string $name = null ) |
Προσθέτει ένα δυναμικό βήμα επανάληψης για κάθε στοιχείο, που επεκτείνει έναν κλάδο για κάθε στοιχείο της κατάστασης της ροής εργασιών. |
repeat_while( string $target_step, ?string $state_key = null, mixed $expected = true, ?string $name = null, ?string $condition_class = null, ?int $max_iterations = null ) |
Επιστρέφει σε προηγούμενο ονομασμένο βήμα όσο ταιριάζει ένα δημόσιο κλειδί κατάστασης ή μια κλάση RepeatCondition. |
repeat_until( string $target_step, ?string $state_key = null, mixed $expected = true, ?string $name = null, ?string $condition_class = null, ?int $max_iterations = null ) |
Επιστρέφει σε προηγούμενο ονομασμένο βήμα μέχρι να ταιριάξει ένα δημόσιο κλειδί κατάστασης ή μια κλάση RepeatCondition. |
run_workflow( string $workflow_name, WorkflowBuilder $sub_builder ) |
Προσθέτει ένα βήμα εκτέλεσης ροής εργασιών. |
delay( int $seconds = 0, int $minutes = 0, int $hours = 0, int $days = 0 ) |
Προσθέτει ένα βήμα μόνιμης καθυστέρησης. Οι διάρκειες αθροίζονται. |
wait_for_signal( string $name, ?string $result_key = null, ?string $step_name = null, array $match_payload = [], ?string $correlation_key = null ) |
Προσθέτει ένα βήμα αναμονής σήματος. Τα προαιρετικά match_payload και correlation_key επιτρέπουν την παράβλεψη άσχετων συμβάντων. |
wait_for_signals( array $signal_names, WaitMode $mode = WaitMode::All, ?string $result_key = null, ?string $name = null, array $match_payload = [], ?string $correlation_key = null ) |
Περιμένει όλα ή οποιαδήποτε από πολλά σήματα, με προαιρετική αντιστοίχιση περιεχομένου και συσχέτιση. |
wait_for_approval( string $signal_name = 'approval', ?string $result_key = 'approval', ?string $name = null, array $match_payload = [], ?string $correlation_key = null ) |
Περιμένει σήμα έγκρισης από άνθρωπο. |
wait_for_decision( string $approve_signal = 'approved', string $reject_signal = 'rejected', ?string $result_key = 'decision', ?string $name = null, array $match_payload = [], ?string $correlation_key = null ) |
Περιμένει είτε έγκριση είτε απόρριψη και αποθηκεύει ένα δομημένο περιεχόμενο απόφασης. |
wait_for_input( string $signal_name = 'input', ?string $result_key = 'input', ?string $name = null, array $match_payload = [], ?string $correlation_key = null ) |
Περιμένει σήμα εισαγωγής από άνθρωπο. |
wait_for_workflow( int|string $workflow, ?string $result_key = null, ?string $name = null ) |
Περιμένει την ολοκλήρωση ενός αναγνωριστικού ροής εργασιών ή ενός αναγνωριστικού που είναι αποθηκευμένο στη δημόσια κατάσταση. |
wait_for_workflows( array|string $workflows, WaitMode $mode = WaitMode::All, ?string $result_key = null, ?string $name = null, ?int $quorum = null ) |
Περιμένει την ολοκλήρωση όλων, οποιωνδήποτε ή απαρτίας από πολλές ροές εργασιών. |
wait_for_workflow_group( string $group_key, WaitMode $mode = WaitMode::All, ?int $quorum = null, ?string $result_key = null, ?string $name = null ) |
Περιμένει μια ήδη εκκινημένη ομάδα ροών εργασιών βάσει εσωτερικού κλειδιού ομάδας. |
start_workflows( string $items_key, WorkflowBuilder $workflow_builder, string $result_key = 'started_workflow_ids', string $payload_key = 'item', bool $inherit_state = true, ?string $name = null, ?string $group_key = null ) |
Αποστέλλει μία ροή εργασιών ανώτατου επιπέδου ανά στοιχείο χρόνου εκτέλεσης, με προαιρετική επισήμανση του εκκινημένου συνόλου με μόνιμο κλειδί ομάδας. |
start_agents( string $items_key, WorkflowBuilder $workflow_builder, string $result_key = 'agent_workflow_ids', string $payload_key = 'agent_task', bool $inherit_state = true, ?string $name = null, ?string $group_key = null ) |
Ψευδώνυμο προσανατολισμένο σε agent για το start_workflows(). |
wait_for_agents( array|string $workflows = 'agent_workflow_ids', WaitMode $mode = WaitMode::All, ?string $result_key = 'agent_results', ?string $name = null, ?int $quorum = null ) |
Ψευδώνυμο προσανατολισμένο σε agent για το wait_for_workflows(). |
wait_for_agent_group( string $group_key = 'agents', WaitMode $mode = WaitMode::All, ?int $quorum = null, ?string $result_key = 'agent_results', ?string $name = null ) |
Ψευδώνυμο προσανατολισμένο σε agent για το wait_for_workflow_group(). |
version( string $version ) |
Επισημαίνει τον ορισμό ροής εργασιών με έκδοση σε επίπεδο εφαρμογής για επιθεώρηση και εξαγωγές. |
idempotency_key( string $key ) |
Καθιστά την αποστολή της ροής εργασιών μόνιμη για κλειδί που παρέχει ο καλών. Η εκ νέου αποστολή με το ίδιο κλειδί επιστρέφει το αρχικό αναγνωριστικό ροής εργασιών. |
max_transitions( int $max ) |
Αποτυγχάνει τη ροή εργασιών αν ολοκληρωθούν περισσότερες από $max μεταβάσεις βημάτων. |
max_for_each_items( int $max ) |
Αποτυγχάνει τη ροή εργασιών αν ένα βήμα for_each() επιχειρήσει να επεκτείνει περισσότερα από $max στοιχεία. |
max_state_bytes( int $bytes ) |
Αποτυγχάνει τη ροή εργασιών αν η δημόσια κατάσταση υπερβεί τα $bytes. |
max_cost_units( int $max ) |
Αποτυγχάνει τη ροή εργασιών αν τα ολοκληρωμένα βήματα καταναλώσουν περισσότερες από $max μονάδες κόστους. |
max_started_workflows( int $max ) |
Αποτυγχάνει τη ροή εργασιών πριν από την αποστολή περισσότερων από $max θυγατρικών ροών εργασιών. |
compensate_with( string $handler_class ) |
Συνδέει έναν χειριστή αντιστάθμισης με το πιο πρόσφατα προστεθέν βήμα. |
compensate_on_failure() |
Εκτελεί αυτόματα τις αντισταθμίσεις των ολοκληρωμένων βημάτων όταν αποτύχει η ροή εργασιών. |
on_queue( string $queue ) |
Ορίζει την ουρά για όλα τα βήματα. |
with_priority( Priority $priority ) |
Ορίζει την προτεραιότητα για όλα τα βήματα. |
max_attempts( int $max ) |
Ορίζει τον μέγιστο αριθμό προσπαθειών επανάληψης ανά βήμα. |
on_cancel( string $handler_class ) |
Καταχωρίζει μια κλάση χειριστή εκκαθάρισης για ακύρωση. Δείτε την ενότητα Ακύρωση. |
prune_state_after( int $steps = 2 ) |
Ενεργοποιεί την αυτόματη εκκαθάριση κατάστασης. Αφαιρεί τις εξόδους βημάτων που είναι παλαιότερες από το όριο. Δείτε την ενότητα Εκκαθάριση κατάστασης. |
must_complete_within( int $seconds = 0, int $minutes = 0, int $hours = 0, int $days = 0 ) |
Ορίζει προθεσμία για τη ροή εργασιών. Οι διάρκειες αθροίζονται. Δείτε την ενότητα Προθεσμίες. |
on_deadline( string $handler_class ) |
Καταχωρίζει έναν χειριστή που καλείται όταν παρέλθει η προθεσμία της ροής εργασιών. Δείτε την ενότητα Προθεσμίες. |
dispatch( array $initial_payload = [] ) |
Αποστέλλει τη ροή εργασιών. Επιστρέφει το αναγνωριστικό της. |
Queuety::workflow_status( $workflow_id )
Λαμβάνει την κατάσταση της ροής εργασιών. Επιστρέφει ένα αντικείμενο WorkflowState ή null.
$state = Queuety::workflow_status( $workflow_id );
echo $state->name; // 'generate_report'
echo $state->status->value; // 'running'
echo $state->current_step; // 1
echo $state->total_steps; // 3
print_r( $state->state ); // accumulated public state array
echo $state->wait_type; // 'signal' or 'workflow' while blocked
echo $state->wait_mode; // 'all', 'any', or 'quorum'
echo $state->definition_version; // 'research.v2'
echo $state->definition_hash; // '4c7a...'
echo $state->idempotency_key; // 'brief:42:research'
echo $state->artifact_count; // 2
print_r( $state->budget ); // configured workflow budget + current usage
print_r( $state->wait_details ); // matched/remaining blockers, result key, correlation info
print_r( $state->artifact_keys ); // ['draft', 'citations']
Το WorkflowState εκθέτει επίσης:
waiting_for: τα ονόματα σημάτων ή τα αναγνωριστικά ροών εργασίας που εμποδίζουν αυτήν τη στιγμή την εκτέλεσηcurrent_step_name: το διαμορφωμένο όνομα του τρέχοντος βήματος, αν υπάρχειwait_mode: η τρέχουσα λειτουργία αναμονής (all,anyήquorum) κατά τον αποκλεισμόwait_details: πρόσθετα δεδομένα επιθεώρησης, όπως οι αντιστοιχισμένοι και οι υπόλοιποι παράγοντες αποκλεισμούdefinition_version: η τιμή που ορίστηκε από τοversion(), αν υπάρχειdefinition_hash: ένας ντετερμινιστικός κατακερματισμός του ορισμού της ροής εργασίαςidempotency_key: το μόνιμο κλειδί αποστολής, αν υπάρχειbudget: τα διαμορφωμένα όρια μαζί με την τρέχουσα χρήση, αν είναι ενεργοποιημένες οι δικλίδες ασφαλείαςartifact_count: ο αριθμός των αποθηκευμένων τεχνουργημάτων για τη ροή εργασίαςartifact_keys: τα κλειδιά των αποθηκευμένων τεχνουργημάτων για γρήγορη επιθεώρηση
Queuety::retry_workflow( $workflow_id )
Επανεκκινήστε μια αποτυχημένη ροή εργασίας από το βήμα στο οποίο απέτυχε.
Queuety::retry_workflow( $workflow_id );
Προκαλεί το RuntimeException αν η ροή εργασίας έχει ήδη αποκατασταθεί μετά από αποτυχία.
Queuety::pause_workflow( $workflow_id )
Κάντε παύση σε μια εκτελούμενη ροή εργασίας. Οι εργασίες του τρέχοντος βήματος που βρίσκονται ήδη στην ουρά μπορεί να ολοκληρωθούν, αλλά δεν θα προστεθούν στην ουρά επόμενα βήματα μέχρι να συνεχίσετε τη ροή εργασίας.
Queuety::pause_workflow( $workflow_id );
Queuety::resume_workflow( $workflow_id )
Συνεχίστε μια ροή εργασίας που βρίσκεται σε παύση.
Queuety::resume_workflow( $workflow_id );
Queuety::cancel_workflow( $workflow_id )
Ακυρώστε μια ροή εργασίας και εκτελέστε τυχόν καταχωρισμένους χειριστές καθαρισμού. Ορίζει την κατάσταση σε cancelled και θέτει σε αδράνεια όλες τις εκκρεμείς και υπό επεξεργασία εργασίες της ροής εργασίας.
Queuety::cancel_workflow( $workflow_id );
Προκαλεί το RuntimeException αν η ροή εργασίας είναι ήδη completed ή cancelled. Δείτε την ενότητα Ακύρωση για λεπτομέρειες.
Queuety::rewind_workflow( $workflow_id, $to_step )
Επαναφέρετε μια ροή εργασίας σε προηγούμενο βήμα και εκτελέστε την ξανά από εκεί. Η κατάσταση επαναφέρεται από το αρχείο καταγραφής συμβάντων state_after για το συγκεκριμένο βήμα και το επόμενο βήμα προστίθεται στην ουρά.
Queuety::rewind_workflow( $workflow_id, to_step: 1 );
Προκαλεί το RuntimeException αν δεν υπάρχει καταγεγραμμένη κατάσταση για το βήμα-στόχο. Απαιτείται το Αρχείο καταγραφής συμβάντων ροής εργασίας. Δείτε την ενότητα Μετακίνηση στον χρόνο για λεπτομέρειες.
Queuety::fork_workflow( $workflow_id )
Διακλαδώστε μια εκτελούμενη ροή εργασίας σε ένα ανεξάρτητο αντίγραφο στην τρέχουσα κατάστασή της. Επιστρέφει το νέο αναγνωριστικό ροής εργασίας.
$forked_id = Queuety::fork_workflow( $workflow_id );
Η διακλαδωμένη ροή εργασίας αποκτά δικό της αναγνωριστικό και λειτουργεί ανεξάρτητα από την αρχική. Δείτε την ενότητα Διακλάδωση για λεπτομέρειες.
Queuety::export_workflow( $workflow_id )
Εξαγάγετε το πλήρες ιστορικό εκτέλεσης μιας ροής εργασίας ως πίνακα με δυνατότητα σειριοποίησης JSON. Περιλαμβάνει την εγγραφή της ροής εργασίας, όλες τις εργασίες, τα συμβάντα της ροής εργασίας και τις καταχωρίσεις αρχείου καταγραφής.
$data = Queuety::export_workflow( $workflow_id );
Δείτε την ενότητα Εξαγωγή και επανάληψη για τη δομή JSON και τις περιπτώσεις χρήσης.
Queuety::replay_workflow( $data )
Επαναλάβετε μια εξαγόμενη ροή εργασίας στο τρέχον περιβάλλον. Δημιουργεί μια νέα ροή εργασίας από τα δεδομένα εξαγωγής και επιστρέφει το νέο αναγνωριστικό της.
$new_id = Queuety::replay_workflow( $data );
Δείτε την ενότητα Εξαγωγή και επανάληψη για λεπτομέρειες.
Queuety::replace_wp_cron()
Αντικαταστήστε το ενσωματωμένο σύστημα WordPress cron με τον προγραμματιστή του Queuety. Παρεμβάλλεται στα wp_schedule_event(), wp_unschedule_event() και wp_get_scheduled_event() και δρομολογεί τα επαναλαμβανόμενα συμβάντα μέσω του worker Queuety.
Queuety::replace_wp_cron();
Λειτουργεί μόνο όταν έχει φορτωθεί το WordPress. Δείτε την ενότητα Αντικατάσταση WP-Cron για λεπτομέρειες.
Queuety::restore_wp_cron()
Επαναφέρετε την προεπιλεγμένη συμπεριφορά του WordPress cron αφαιρώντας τα hooks γεφύρωσης Queuety cron.
Queuety::restore_wp_cron();
Δείτε την ενότητα Αντικατάσταση WP-Cron για τους περιορισμούς.
Queuety::signal( $workflow_id, $name, $data )
Στείλτε ένα σήμα σε μια ροή εργασίας. Αν η ροή εργασίας περιμένει αυτήν τη στιγμή αυτό το σήμα, συνεχίζει αμέσως. Διαφορετικά, το σήμα αποθηκεύεται και λαμβάνεται όταν η ροή εργασίας φτάσει στο αντίστοιχο βήμα wait_for_signal.
Queuety::signal( $workflow_id, 'approved' );
// With data merged into workflow state
Queuety::signal( $workflow_id, 'approved', [
'approved_by' => 'admin@example.com',
] );
Δείτε την ενότητα Σήματα ροής εργασίας για λεπτομέρειες.
Queuety::approve_workflow( $workflow_id, $data = [], $signal_name = 'approval' )
Σημασιολογικό περιτύλιγμα γύρω από το signal() για ροές εγκρίσεων.
Queuety::approve_workflow( $workflow_id, [
'reviewer' => 'editor@example.com',
] );
Queuety::reject_workflow( $workflow_id, $data = [], $signal_name = 'rejected' )
Σημασιολογικό περιτύλιγμα γύρω από το signal() για ροές απορρίψεων.
Queuety::reject_workflow( $workflow_id, [
'reason' => 'needs citations',
] );
Queuety::submit_workflow_input( $workflow_id, $data = [], $signal_name = 'input' )
Σημασιολογικό περιτύλιγμα γύρω από το signal() για δομημένη ανθρώπινη εισαγωγή.
Queuety::submit_workflow_input( $workflow_id, [
'notes' => 'Ship after legal review',
] );
Queuety::put_artifact( $workflow_id, $artifact_key, $content, $kind = 'json', $step_index = null, $metadata = [] )
Αποθηκεύστε ένα μόνιμο τεχνούργημα για μια ροή εργασίας.
Queuety::put_artifact(
$workflow_id,
'research_brief',
[ 'summary' => 'done' ],
'json',
metadata: [ 'source' => 'agent' ],
);
Queuety::put_current_artifact( $artifact_key, $content, $kind = 'json', $metadata = [] )
Αποθηκεύστε ένα τεχνούργημα για το βήμα της ροής εργασίας που εκτελείται αυτήν τη στιγμή.
Queuety::put_current_artifact(
'draft',
[ 'status' => 'ready' ],
'json',
);
Queuety::workflow_artifact( $workflow_id, $artifact_key )
Ανακτήστε ένα αποθηκευμένο τεχνούργημα για μια ροή εργασίας.
$artifact = Queuety::workflow_artifact( $workflow_id, 'draft' );
Queuety::workflow_artifacts( $workflow_id, $include_content = false )
Παραθέστε τα τεχνουργήματα μιας ροής εργασίας.
$artifacts = Queuety::workflow_artifacts( $workflow_id );
Queuety::delete_workflow_artifact( $workflow_id, $artifact_key )
Διαγράψτε ένα τεχνούργημα μιας ροής εργασίας.
Queuety::delete_workflow_artifact( $workflow_id, 'draft' );
Μηχανές καταστάσεων
Queuety::machine( $name )
Ξεκινήστε τη δημιουργία μιας μηχανής καταστάσεων. Επιστρέφει ένα StateMachineBuilder.
use Queuety\Enums\StateMachineStatus;
$machine_id = Queuety::machine( 'agent_session' )
->state( 'awaiting_user' )
->on( 'user_message', 'planning' )
->state( 'planning' )
->action( PlanSessionAction::class )
->on( 'planned', 'completed' )
->state( 'completed', StateMachineStatus::Completed )
->dispatch( [ 'thread_id' => 42 ] );
Μέθοδοι StateMachineBuilder
| Μέθοδος | Περιγραφή |
|---|---|
initial( string $state_name ) |
Ορίστε ρητά την αρχική κατάσταση. |
state( string $state_name, ?StateMachineStatus $terminal_status = null ) |
Ξεκινήστε τη διαμόρφωση μιας κατάστασης. |
action( string|array $action_class ) |
Καταχωρίστε μια ενέργεια εισόδου σε ουρά για την τρέχουσα κατάσταση. Περάστε ένα όνομα κλάσης ή έναν δομημένο ορισμό με class, payload και config· το payload φτάνει στο StateAction::handle() ως $payload. |
on( string $event, string $target, string|array|null $guard_class = null, ?string $name = null ) |
Καταχωρίστε μία μετάβαση συμβάντος από την τρέχουσα κατάσταση. Η συνθήκη ελέγχου δέχεται την ίδια δομημένη μορφή με το action(). |
on_queue( string $queue ) |
Ορίστε την ουρά που θα χρησιμοποιείται για τις ενέργειες κατάστασης που μπαίνουν σε ουρά. |
with_priority( Priority $priority ) |
Ορίστε την προτεραιότητα για τις ενέργειες κατάστασης που μπαίνουν σε ουρά. |
max_attempts( int $max_attempts ) |
Ορίστε το όριο επαναλήψεων για τις ενέργειες κατάστασης που μπαίνουν σε ουρά. |
version( string $version ) |
Προσθέστε στην έκδοση της εφαρμογής ετικέτα στον ορισμό της μηχανής. |
idempotency_key( string $key ) |
Κάντε την αποστολή μόνιμη για ένα κλειδί που παρέχεται από τον καλούντα. Αν γίνει νέα αποστολή με το ίδιο κλειδί, επιστρέφεται το αρχικό αναγνωριστικό μηχανής. |
dispatch( array $initial_state = [] ) |
Κάντε αποστολή της μηχανής και επιστρέψτε το αναγνωριστικό της. |
Οι κλάσεις ενεργειών εισόδου σε κατάσταση μπορούν επίσης να εκθέτουν μια προαιρετική μέθοδο config() με τα ίδια κλειδιά πολιτικής πόρων που υποστηρίζουν τα βήματα ροής εργασίας: concurrency_group, concurrency_limit και cost_units.
Queuety::dispatch_state_machine_definition( $definition, $initial_state = [], $options = [] )
Κάντε αποστολή μιας σειριοποιημένης δέσμης ορισμού μηχανής καταστάσεων. Οι περισσότερες εφαρμογές θα πρέπει να προτιμούν το machine()->dispatch(). Αυτή η μέθοδος χαμηλότερου επιπέδου επιτρέπει στους προσαρμογείς να εκκινούν μια μηχανή χωρίς άμεση εξάρτηση από το εργαλείο δόμησης.
$machine_id = Queuety::dispatch_state_machine_definition(
$definition,
[ 'thread_id' => 42 ],
[ 'idempotency_key' => 'thread:42' ],
);
Queuety::machine_status( $machine_id )
Λάβετε την τρέχουσα κατάσταση της μηχανής. Επιστρέφει ένα αντικείμενο StateMachineState ή null.
$status = Queuety::machine_status( $machine_id );
echo $status->name; // 'agent_session'
echo $status->status->value; // 'waiting_event'
echo $status->current_state; // 'awaiting_review'
print_r( $status->state ); // public machine state
print_r( $status->available_events ); // valid incoming events in the current state
Το StateMachineState εκθέτει επίσης:
definition_versiondefinition_hashidempotency_keyerror_messagecurrent_actionterminal_status
Queuety::machine_event( $machine_id, $event_name, $payload = [] )
Στείλτε ένα εξωτερικό συμβάν σε μια μηχανή που βρίσκεται σε αναμονή.
Queuety::machine_event(
$machine_id,
'approve',
[
'approved' => true,
'reviewer' => 'editor@example.com',
]
);
Το φορτίο είναι διαθέσιμο στις συνθήκες ελέγχου μετάβασης και συγχωνεύεται στη δημόσια κατάσταση της μηχανής όταν γίνεται αποδοχή του συμβάντος.
Queuety::list_machines( $limit = 50, $status = null )
Παραθέστε τις αποθηκευμένες εγγραφές μηχανών για επιθεώρηση.
$machines = Queuety::list_machines();
$waiting = Queuety::list_machines( status: 'waiting_event' );
Κάθε εγγραφή περιλαμβάνει το αναγνωριστικό και το όνομα της μηχανής, την κατάσταση, την τρέχουσα κατάσταση, την έκδοση και τον κατακερματισμό του ορισμού, το κλειδί αδρανούς επανάληψης και τις χρονοσφραγίδες του κύκλου ζωής.
Queuety::machine_timeline( $machine_id, $limit = 100, $offset = 0 )
Λάβετε το μόνιμο χρονολόγιο συμβάντων για μία μηχανή.
$timeline = Queuety::machine_timeline( $machine_id );
$page_two = Queuety::machine_timeline( $machine_id, 100, 100 );
Κάθε εγγραφή συμβάντος περιέχει: id, machine_id, job_id, state_name, handler, event, event_name, transition_name, queue, attempt, input, output, state_before, state_after, context, artifacts, chunks, error, duration_ms και created_at.
Queuety::machine_trace( $machine_id )
Λάβετε μια κανονικοποιημένη δέσμη ιχνών για ένα UI αποσφαλματωτή μηχανής καταστάσεων.
$trace = Queuety::machine_trace( $machine_id );
Το ίχνος περιέχει machine, ομαδοποιημένα states, ακατέργαστα events, συσχετισμένα jobs ενεργειών, logs, artifacts και chunks.
Queuety::machine_state_at( $machine_id, $event_id )
Λάβετε τη δημόσια κατάσταση μετά από συγκεκριμένο συμβάν ίχνους μηχανής ή null αν δεν βρεθεί.
$state = Queuety::machine_state_at( $machine_id, $event_id );
Δείτε την ενότητα Μηχανές καταστάσεων για το μοντέλο κύκλου ζωής και τα μοτίβα χρήσης.
Πρότυπα ροών εργασίας
Queuety::define_workflow( $name )
Δημιουργήστε ένα εργαλείο δόμησης ροής εργασίας για χρήση ως πρότυπο.
$builder = Queuety::define_workflow( 'onboarding' )
->then( CreateAccountHandler::class )
->then( SendWelcomeEmailHandler::class );
Queuety::register_workflow_template( $builder )
Καταχωρίστε ένα πρότυπο ροής εργασίας.
Queuety::register_workflow_template( $builder );
Queuety::run_workflow( $name, $payload, $options = [] )
Κάντε αποστολή ενός καταχωρισμένου προτύπου ροής εργασίας βάσει ονόματος. Επιστρέφει το αναγνωριστικό της ροής εργασίας.
$workflow_id = Queuety::run_workflow( 'onboarding', [ 'email' => 'user@example.com' ] );
$workflow_id = Queuety::run_workflow(
'onboarding',
[ 'email' => 'user@example.com' ],
[ 'idempotency_key' => 'onboarding:user@example.com' ],
);
Προκαλεί το RuntimeException αν το πρότυπο δεν είναι καταχωρισμένο.
Queuety::dispatch_workflow_definition( $definition, $payload, $options = [] )
Κάντε αποστολή μιας ροής εργασίας από δέσμη ορισμού χρόνου εκτέλεσης.
Οι περισσότερες εφαρμογές θα πρέπει να προτιμούν το run_workflow() ή το workflow()->dispatch(). Αυτή η μέθοδος χαμηλότερου επιπέδου επιτρέπει σε επαναχρησιμοποιήσιμους προσαρμογείς να κάνουν αποστολή ενός σειριοποιημένου ορισμού ροής εργασίας χωρίς να εξαρτώνται από εσωτερικές μεθόδους του διαχειριστή ροών εργασίας.
$workflow_id = Queuety::dispatch_workflow_definition(
$definition,
[ 'email' => 'user@example.com' ],
[ 'idempotency_key' => 'onboarding:user@example.com' ],
);
Queuety::on_action( $hook, $workflow, $map = null, $when = null, $idempotency_key = null, $priority = 10, $accepted_args = null )
Καταχωρίστε μια ενέργεια WordPress που κάνει αποστολή μιας ροής εργασίας.
Queuety::on_action(
'save_post',
workflow: 'content_review',
map: static fn ( int $post_id, object $post, bool $update ): array => [
'post_id' => $post_id,
'post_type' => $post->post_type,
'update' => $update,
],
when: static fn ( int $post_id, object $post ): bool => 'post' === $post->post_type,
idempotency_key: static fn ( int $post_id ): string => "save_post:{$post_id}",
);
Το $workflow μπορεί να είναι είτε:
- ένα καταχωρισμένο όνομα προτύπου ροής εργασίας
- ένα ενσωματωμένο
WorkflowBuilder
Τα map, when και idempotency_key εκτελούνται συγχρονισμένα μέσα στο τρέχον αίτημα WordPress. Μόνο τα ίδια τα βήματα της ροής εργασίας εκτελούνται ασύγχρονα μετά την αποστολή.
Δείτε την πλήρη καθοδήγηση στην ενότητα Εναύσματα ενεργειών.
Queuety::workflow_templates()
Λάβετε το μητρώο προτύπων ροών εργασίας.
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null
Queuety::load_workflows( $directory, $recursive )
Φορτώστε και καταχωρίστε όλα τα αρχεία ροών εργασίας από έναν κατάλογο. Κάθε αρχείο .php θα πρέπει να επιστρέφει ένα WorkflowBuilder. Επιστρέφει τον αριθμό των καταχωρισμένων ροών εργασίας.
$count = Queuety::load_workflows( __DIR__ . '/workflows/' );
$count = Queuety::load_workflows( __DIR__ . '/workflows/', recursive: true );
Queuety::load_workflow_file( $file_path )
Φορτώστε και καταχωρίστε ένα αρχείο ροής εργασίας. Επιστρέφει το WorkflowTemplate ή το null αν το αρχείο δεν επιστρέφει εργαλείο δόμησης.
$template = Queuety::load_workflow_file( __DIR__ . '/workflows/onboard-user.php' );
Προγραμματισμός
Queuety::schedule( $handler, $payload )
Δημιουργήστε ένα επαναλαμβανόμενο χρονοδιάγραμμα. Επιστρέφει ένα εργαλείο δόμησης PendingSchedule.
Queuety::schedule( 'cleanup_handler' )
->every( '1 hour' )
->on_queue( 'maintenance' );
Queuety::schedule( 'nightly_report' )
->cron( '0 3 * * *' )
->on_queue( 'reports' );
Μέθοδοι PendingSchedule
| Μέθοδος | Περιγραφή |
|---|---|
every( string $interval ) |
Ορίστε μια έκφραση διαστήματος (e.g. 1 hour, 30 minutes) |
cron( string $expression ) |
Ορίστε μια έκφραση cron με 5 πεδία |
overlap( OverlapPolicy $policy ) |
Ορίστε την πολιτική επικάλυψης (προεπιλογή: Allow). Δείτε την ενότητα Προγραμματισμός. |
on_queue( string $queue ) |
Ορίστε την ουρά-στόχο (προεπιλογή: default) |
id() |
Επιβάλετε την αποστολή και επιστρέψτε το αναγνωριστικό χρονοδιαγράμματος |
Queuety::scheduler()
Λάβετε την εσωτερική παρουσία του Scheduler.
$scheduler = Queuety::scheduler();
$schedules = $scheduler->list();
$scheduler->remove( 'handler_name' );
$count = $scheduler->tick(); // manually trigger
Καταχώριση χειριστών
Queuety::register( $name, $class )
Καταχωρίστε μια κλάση χειριστή με ένα όνομα.
Queuety::register( 'send_email', SendEmailHandler::class );
Queuety::discover_handlers( $directory, $namespace )
Εντοπίστε αυτόματα και καταχωρίστε κλάσεις χειριστών από έναν κατάλογο. Επιστρέφει τον αριθμό των καταχωρισμένων χειριστών.
$count = Queuety::discover_handlers( __DIR__ . '/handlers', 'MyPlugin\\Handlers' );
Queuety::registry()
Λάβετε το μητρώο χειριστών.
$registry = Queuety::registry();
Παρατηρησιμότητα
Queuety::logger()
Λάβετε την παρουσία Logger για αναζήτηση καταχωρίσεων αρχείου καταγραφής.
$logger = Queuety::logger();
$logs = $logger->for_job( 42 );
$logs = $logger->for_workflow( 7 );
$logs = $logger->for_handler( 'send_email', 50 );
$logs = $logger->for_event( LogEvent::Failed, 50 );
$logs = $logger->since( new \DateTimeImmutable( '-1 hour' ), 100 );
$count = $logger->purge( 30 );
Queuety::metrics()
Λάβετε την παρουσία Metrics.
$stats = Queuety::metrics()->handler_stats( 60 ); // last 60 minutes
Queuety::webhook_notifier()
Λάβετε την παρουσία WebhookNotifier.
$notifier = Queuety::webhook_notifier();
$id = $notifier->register( 'job.buried', 'https://hooks.slack.com/...' );
$webhooks = $notifier->list();
$notifier->remove( $id );
Queuety::rate_limiter()
Λάβετε την παρουσία RateLimiter.
$limiter = Queuety::rate_limiter();
$limiter->register( 'call_openai', 60, 60 );
Προσωρινή μνήμη
Queuety::cache()
Λάβετε την παρουσία του ενεργού συστήματος προσωρινής μνήμης.
$cache = Queuety::cache();
$cache->set( 'my_key', 'my_value', 60 );
$value = $cache->get( 'my_key' );
Queuety::set_cache( $cache )
Παρακάμψτε το σύστημα προσωρινής μνήμης. Καλέστε πριν από το Queuety::init() για να χρησιμοποιήσετε μια προσαρμοσμένη υλοποίηση.
Queuety::set_cache( new RedisCache() );
Queuety::init( $connection );
QUEUETY_CACHE_TTL
Προεπιλεγμένος χρόνος ζωής (TTL) της προσωρινής μνήμης σε δευτερόλεπτα (προεπιλογή: 5). Ορίστε αυτήν τη σταθερά στο wp-config.php για να αλλάξετε τον προεπιλεγμένο TTL που χρησιμοποιούν οι εσωτερικές λειτουργίες προσωρινής μνήμης.
define( 'QUEUETY_CACHE_TTL', 10 );
Δείτε την ενότητα Προσωρινή αποθήκευση για λεπτομέρειες σχετικά με τα συστήματα υποστήριξης και τον αυτόματο εντοπισμό.
Αρχείο καταγραφής συμβάντων μηχανής καταστάσεων
Queuety::machine_events()
Λάβετε την παρουσία StateMachineEventLog.
$log = Queuety::machine_events();
Αρχείο καταγραφής συμβάντων ροής εργασίας
Queuety::workflow_events()
Λάβετε την παρουσία WorkflowEventLog.
$log = Queuety::workflow_events();
Queuety::workflow_timeline( $workflow_id, $limit = 100, $offset = 0 )
Λάβετε το πλήρες χρονολόγιο συμβάντων μιας ροής εργασίας. Επιστρέφει έναν πίνακα εγγραφών συμβάντων, ταξινομημένων κατά αναγνωριστικό.
$events = Queuety::workflow_timeline( $workflow_id );
$next = Queuety::workflow_timeline( $workflow_id, 100, 100 );
Κάθε εγγραφή συμβάντος περιέχει: id, workflow_id, job_id, parent_event_id, step_index, step_name, step_type, handler, event, queue, attempt, input, output, state_before, state_after, context, artifacts, chunks, error, error_message (αντιγραμμένο από το error.message), duration_ms και created_at.
Queuety::workflow_trace( $workflow_id )
Λάβετε μια κανονικοποιημένη δέσμη ιχνών για ένα UI αποσφαλματωτή ροής εργασίας.
$trace = Queuety::workflow_trace( $workflow_id );
Το ίχνος περιέχει workflow, ομαδοποιημένα steps, ακατέργαστα events, jobs, logs, artifacts, chunks, signals και wait_dependencies.
Queuety::trace_input( $input )
Ορίστε δεδομένα εισόδου σε επίπεδο εφαρμογής για το βήμα ροής εργασίας που εκτελείται αυτήν τη στιγμή.
Queuety::trace_output( $output )
Ορίστε δεδομένα εξόδου σε επίπεδο εφαρμογής για το βήμα ροής εργασίας που εκτελείται αυτήν τη στιγμή.
Queuety::trace_context( array $context )
Συγχωνεύστε περιεχόμενο σε επίπεδο εφαρμογής στο βήμα ροής εργασίας που εκτελείται αυτήν τη στιγμή.
Queuety::workflow_state_at( $workflow_id, $step_index )
Λάβετε τη δημόσια κατάσταση μετά την ολοκλήρωση ή τη συνέχιση ενός συγκεκριμένου βήματος ροής εργασίας ή null αν δεν βρεθεί.
$state = Queuety::workflow_state_at( $workflow_id, 2 );
Δείτε την ενότητα Αρχείο καταγραφής συμβάντων ροής εργασίας για περιπτώσεις χρήσης και εντολές CLI.
Εσωτερικές παρουσίες
Αυτές οι μέθοδοι επιστρέφουν εσωτερικές παρουσίες για προχωρημένες περιπτώσεις χρήσης.
| Μέθοδος | Επιστρέφει | Περιγραφή |
|---|---|---|
Queuety::queue() |
Queue |
Λειτουργίες ουράς (δέσμευση, αποδέσμευση, θέση σε αδράνεια) |
Queuety::worker() |
Worker |
Έλεγχος διεργασιών worker |
Queuety::workflow_manager() |
Workflow |
Ενορχήστρωση ροών εργασίας |
Queuety::machines() |
StateMachine |
Διαχείριση κύκλου ζωής μηχανών καταστάσεων |
Queuety::connection() |
Connection |
Σύνδεση βάσης δεδομένων |
Queuety::batch_manager() |
BatchManager |
Διαχείριση κύκλου ζωής παρτίδων (ακύρωση, εκκαθάριση) |
Queuety::chunk_store() |
ChunkStore |
Αποθήκευση τμημάτων για βήματα ροής δεδομένων |
Queuety::machine_events() |
StateMachineEventLog |
Συμβάντα ιχνών μηχανής καταστάσεων και κανονικοποιημένες δέσμες ιχνών |
Queuety::workflow_events() |
WorkflowEventLog |
Συμβάντα ιχνών ροής εργασίας και κανονικοποιημένες δέσμες ιχνών |
Queuety::resource_manager() |
ResourceManager |
Προφίλ εισαγωγής worker, σταθμισμένοι προϋπολογισμοί και επιθεώρηση μνήμης συστήματος |
Queuety::cache() |
Cache |
Παρουσία συστήματος προσωρινής μνήμης |
Δοκιμές
Queuety::fake()
Αντικαταστήστε την ουρά με ένα εικονικό σύστημα στη μνήμη για δοκιμές. Επιστρέφει μια παρουσία QueueFake που καταγράφει τις εργασίες που αποστέλλονται χωρίς πρόσβαση στη βάση δεδομένων. Το create_batch() καταγράφει επίσης εικονικά μεταδεδομένα παρτίδων· οι αλυσίδες ελέγχονται μέσω των επιμέρους εργασιών που αποστέλλουν.
$fake = Queuety::fake();
SendEmailJob::dispatch( 'user@example.com', 'Hello', 'Hi!' );
$fake->assert_pushed( SendEmailJob::class );
Queuety::reset()
Επαναφέρετε όλη την εσωτερική κατάσταση, συμπεριλαμβανομένου του εικονικού συστήματος ουράς. Καλέστε το στο tearDown().
Queuety::reset();
Μέθοδοι QueueFake
| Μέθοδος | Περιγραφή |
|---|---|
assert_pushed( string $class, ?Closure $callback ) |
Επαληθεύστε ότι προστέθηκε στην ουρά μια κλάση εργασίας. Η προαιρετική συνάρτηση επανάκλησης φιλτράρει τα δεδομένα εργασίας. |
assert_pushed_times( string $class, int $count ) |
Επαληθεύστε ότι μια εργασία προστέθηκε στην ουρά ακριβώς N φορές. |
assert_not_pushed( string $class ) |
Επαληθεύστε ότι καμία εργασία δεν προστέθηκε στην ουρά. |
assert_nothing_pushed() |
Επαληθεύστε ότι δεν προστέθηκαν καθόλου εργασίες στην ουρά. |
assert_batched( ?Closure $callback ) |
Επαληθεύστε ότι έγινε αποστολή μιας παρτίδας. Η προαιρετική συνάρτηση επανάκλησης φιλτράρει τα δεδομένα παρτίδας. |
pushed( string $class ) |
Λάβετε όλες τις καταγεγραμμένες αποστολές για μια κλάση. Επιστρέφει έναν πίνακα. |
batches() |
Λάβετε όλες τις καταγεγραμμένες παρτίδες. Επιστρέφει έναν πίνακα. |
reset() |
Διαγράψτε όλες τις καταγεγραμμένες εργασίες και παρτίδες. |
Δείτε την ενότητα Δοκιμές για πλήρη παραδείγματα.
Διεπαφές
Handler
Διεπαφή για απλούς χειριστές εργασιών.
interface Handler {
public function handle( array $payload ): void;
public function config(): array;
}
Το config() μπορεί να επιστρέψει queue, max_attempts, backoff, rate_limit, concurrency_group, concurrency_limit και cost_units.
Step
Διεπαφή για χειριστές βημάτων ροής εργασίας.
interface Step {
public function handle( array $state ): array;
public function config(): array;
}
Το config() μπορεί να επιστρέψει max_attempts, backoff, concurrency_group, concurrency_limit και cost_units.
Contracts\ForEachHandler
Διεπαφή για χειριστές δυναμικών κλάδων επανάληψης για κάθε στοιχείο.
namespace Queuety\Contracts;
interface ForEachHandler {
public function handle_item( array $state, mixed $item, int $index ): array;
public function config(): array;
}
Το config() μπορεί να επιστρέψει max_attempts, backoff, rate_limit, concurrency_group, concurrency_limit και cost_units.
Contracts\ForEachReducer
Προαιρετικός μειωτής για τα αποτελέσματα επανάληψης για κάθε στοιχείο.
namespace Queuety\Contracts;
interface ForEachReducer {
public function reduce( array $state, array $for_each ): array;
}
Contracts\Compensation
Διεπαφή για χειριστές αποκατάστασης βημάτων.
namespace Queuety\Contracts;
interface Compensation {
public function handle( array $state ): void;
}
Contracts\RepeatCondition
Διεπαφή για κατηγορήματα βρόχου που χρησιμοποιούνται από τα repeat_until() και repeat_while() όταν η σύγκριση κλειδιού κατάστασης είναι υπερβολικά περιορισμένη.
namespace Queuety\Contracts;
interface RepeatCondition {
public function matches( array $state ): bool;
}
Contracts\StateAction
Διεπαφή για ενέργειες εισόδου σε κατάσταση που μπαίνουν σε ουρά.
namespace Queuety\Contracts;
interface StateAction {
public function handle( array $state, ?string $event = null, array $event_payload = [], array $payload = [] ): array|string;
}
Το $payload μεταφέρει το δομημένο payload από τον ορισμό της ενέργειας, αν η μηχανή ορίστηκε με ένα τέτοιο. Επιστρέψτε ενημερώσεις δημόσιας κατάστασης. Συμπεριλάβετε το _event και προαιρετικά το _event_payload όταν η ενέργεια πρέπει να προκαλέσει άμεση μετάβαση.
Οι ενέργειες κατάστασης μπορούν επίσης να ορίζουν μια προαιρετική μέθοδο config(). Το Queuety διαβάζει από αυτήν τα concurrency_group, concurrency_limit και cost_units όταν η ενέργεια εισόδου μπαίνει σε ουρά.
Contracts\StateGuard
Διεπαφή για συνθήκες ελέγχου μεταβάσεων μηχανής καταστάσεων.
namespace Queuety\Contracts;
interface StateGuard {
public function allows( array $state, array $event_payload, string $event, array $payload = [] ): bool;
}
Contracts\Job
Διεπαφή για αυτοτελείς κλάσεις εργασιών που μπορούν να αποσταλούν. Οι κλάσεις εργασιών ενσωματώνουν το φορτίο τους σε δημόσιες ιδιότητες και τη λογική εκτέλεσής τους στο handle().
namespace Queuety\Contracts;
interface Job {
public function handle(): void;
}
Οι κλάσεις εργασιών μπορούν προαιρετικά να ορίζουν μια μέθοδο middleware() που επιστρέφει έναν πίνακα παρουσιών Contracts\Middleware.
Contracts\Cache
Διεπαφή για συστήματα υποστήριξης προσωρινής μνήμης. Δείτε την ενότητα Προσωρινή αποθήκευση για ενσωματωμένες υλοποιήσεις και προσαρμοσμένα συστήματα υποστήριξης.
namespace Queuety\Contracts;
interface Cache {
public function get( string $key ): mixed;
public function set( string $key, mixed $value, int $ttl = 0 ): void;
public function delete( string $key ): void;
public function has( string $key ): bool;
public function add( string $key, mixed $value, int $ttl = 0 ): bool;
public function flush(): void;
}
| Μέθοδος | Επιστρέφει | Περιγραφή |
|---|---|---|
get( $key ) |
mixed |
Ανακτήστε μια τιμή. Επιστρέφει null αν δεν βρεθεί ή έχει λήξει. |
set( $key, $value, $ttl ) |
void |
Αποθηκεύστε μια τιμή. TTL 0 σημαίνει ότι δεν λήγει. |
delete( $key ) |
void |
Αφαιρέστε μια τιμή. |
has( $key ) |
bool |
Ελέγξτε αν υπάρχει ένα κλειδί και δεν έχει λήξει. |
add( $key, $value, $ttl ) |
bool |
Ατομική ρύθμιση αν δεν υπάρχει ήδη. Επιστρέφει true αν ορίστηκε η τιμή. |
flush() |
void |
Αφαιρέστε όλα τα στοιχεία από την προσωρινή μνήμη. |
WorkflowEventLog
Καταγράφει μεταβάσεις βημάτων ροής εργασίας με πλήρες περιεχόμενο ίχνους. Η πρόσβαση γίνεται μέσω του Queuety::workflow_events().
| Μέθοδος | Επιστρέφει | Περιγραφή |
|---|---|---|
record_event( array $event ) |
void |
Καταγράψτε ένα ακατέργαστο συμβάν ίχνους |
record_step_started( ... ) |
void |
Καταγράψτε ένα συμβάν step_started με την είσοδο και την κατάσταση πριν από την εκτέλεση |
record_step_completed( ... ) |
void |
Καταγράψτε ένα συμβάν step_completed με την είσοδο, την έξοδο και την κατάσταση πριν και μετά |
record_step_failed( ... ) |
void |
Καταγράψτε ένα συμβάν step_failed με το περιεχόμενο ίχνους και δομημένες λεπτομέρειες σφάλματος |
get_timeline( int $workflow_id, ?int $limit = 100, int $offset = 0 ) |
array |
Λάβετε τα συμβάντα ιχνών της ροής εργασίας με τη σειρά, με προαιρετική σελιδοποίηση |
get_trace( int $workflow_id ) |
array |
Λάβετε μια κανονικοποιημένη δέσμη ιχνών |
get_state_at_step( int $workflow_id, int $step_index ) |
array|null |
Λάβετε τη δημόσια κατάσταση μετά την ολοκλήρωση ή τη συνέχιση συγκεκριμένου βήματος |
prune( int $older_than_days ) |
int |
Διαγράψτε συμβάντα παλαιότερα από τον δεδομένο αριθμό ημερών. Επιστρέφει τον αριθμό των διαγραμμένων εγγραφών. |
StateMachineEventLog
Καταγράφει τον κύκλο ζωής, τις ενέργειες, τις μεταβάσεις και τα συμβάντα συνθηκών ελέγχου μηχανής καταστάσεων με τα ίδια πεδία ιχνών με τα συμβάντα ροής εργασίας.
| Μέθοδος | Επιστρέφει | Περιγραφή |
|---|---|---|
record_event( array $event ) |
void |
Καταγράφει ένα ακατέργαστο συμβάν ίχνους μηχανής |
get_timeline( int $machine_id, ?int $limit = 100, int $offset = 0 ) |
array |
Λαμβάνει τα συμβάντα ίχνους μηχανής με τη σειρά, με προαιρετική σελιδοποίηση |
get_trace( int $machine_id ) |
array |
Λαμβάνει ένα κανονικοποιημένο σύνολο δεδομένων ίχνους μηχανής |
get_state_at_event( int $machine_id, int $event_id ) |
array|null |
Λαμβάνει τη δημόσια κατάσταση μετά από συγκεκριμένο συμβάν ίχνους μηχανής |
prune( int $older_than_days ) |
int |
Διαγράφει συμβάντα παλαιότερα από τον καθορισμένο αριθμό ημερών. Επιστρέφει τις διαγραμμένες εγγραφές. |
Contracts\StreamingStep
Διεπαφή για χειριστές βημάτων ροής εργασιών που παράγουν μια ροή τμημάτων. Κάθε τιμή που αποδίδεται αποθηκεύεται αμέσως στη βάση δεδομένων. Δείτε τα Βήματα ροής.
namespace Queuety\Contracts;
interface StreamingStep {
public function stream( array $state, array $existing_chunks = [] ): \Generator;
public function on_complete( array $chunks, array $state ): array;
public function config(): array;
}
| Μέθοδος | Περιγραφή |
|---|---|
stream( $state, $existing_chunks ) |
Γεννήτρια που αποδίδει τμήματα συμβολοσειράς. Κάθε απόδοση προκαλεί άμεση εγγραφή στη ΒΔ. Σε επανάληψη, το $existing_chunks περιέχει τα τμήματα που είχαν αποθηκευτεί προηγουμένως. |
on_complete( $chunks, $state ) |
Καλείται μετά την ολοκλήρωση της ροής. Επιστρέφει δεδομένα για συγχώνευση στην κατάσταση της ροής εργασιών. |
config() |
Προαιρετική διαμόρφωση. Υποστηρίζει τα max_attempts, backoff, concurrency_group, concurrency_limit και cost_units. |
ChunkStore
Διαχειρίζεται την αποθήκευση τμημάτων για βήματα ροής. Πρόσβαση μέσω του Queuety::chunk_store().
| Μέθοδος | Επιστρέφει | Περιγραφή |
|---|---|---|
get_chunks( int $job_id ) |
string[] |
Ανακτά όλα τα τμήματα μιας εργασίας, ταξινομημένα κατά δείκτη τμήματος |
append_chunk( int $job_id, int $chunk_index, string $content, ?int $workflow_id, ?int $step_index ) |
void |
Προσθέτει ένα τμήμα |
clear_chunks( int $job_id ) |
void |
Διαγράφει όλα τα τμήματα μιας εργασίας |
chunk_count( int $job_id ) |
int |
Μετρά τα τμήματα μιας εργασίας |
get_accumulated( int $job_id ) |
string |
Συνενώνει όλα τα τμήματα σε μία συμβολοσειρά |
Heartbeat
Στατική βοηθητική κλάση για την αποστολή καρδιακών παλμών δραστηριότητας μέσα από χειριστές βημάτων και βήματα ροής. Δείτε τους Καρδιακούς παλμούς.
| Μέθοδος | Περιγραφή |
|---|---|
Heartbeat::init( int $job_id, Connection $conn ) |
Ορίζει το πλαίσιο εργασίας. Καλείται αυτόματα από τον worker. |
Heartbeat::beat( array $progress = [] ) |
Στέλνει καρδιακό παλμό. Ενημερώνει το reserved_at και προαιρετικά αποθηκεύει δεδομένα προόδου στο heartbeat_data. |
Heartbeat::clear() |
Καθαρίζει το πλαίσιο εργασίας. Καλείται αυτόματα από τον worker. |
Heartbeat::current_job_id() |
Λαμβάνει το τρέχον αναγνωριστικό εργασίας (για δοκιμές). |
Contracts\Middleware
Διεπαφή για ενδιάμεσο λογισμικό εργασιών. Το ενδιάμεσο λογισμικό περιβάλλει την εκτέλεση εργασιών με μια διοχέτευση τύπου κρεμμυδιού.
namespace Queuety\Contracts;
interface Middleware {
public function handle( object $job, \Closure $next ): void;
}
Χαρακτηριστικά
Dispatchable
Παρέχει στατικές μεθόδους αποστολής σε κλάσεις εργασιών που υλοποιούν το Contracts\Job. Τα ορίσματα του κατασκευαστή μεταβιβάζονται για τη δημιουργία της εργασίας.
use Queuety\Contracts\Job;
use Queuety\Dispatchable;
class SendEmailJob implements Job {
use Dispatchable;
// ...
}
// Dispatches a new SendEmailJob instance
SendEmailJob::dispatch( 'user@example.com', 'Subject', 'Body' );
| Μέθοδος | Επιστρέφει | Περιγραφή |
|---|---|---|
dispatch( ...$args ) |
PendingJob |
Δημιουργεί ένα στιγμιότυπο και το αποστέλλει |
dispatch_if( bool $condition, ...$args ) |
PendingJob|null |
Αποστέλλει μόνο αν το $condition είναι αληθές |
dispatch_unless( bool $condition, ...$args ) |
PendingJob|null |
Αποστέλλει μόνο αν το $condition είναι ψευδές |
with_chain( array $jobs ) |
ChainBuilder |
Ξεκινά μια αλυσίδα από αυτήν την κλάση εργασίας |
// Conditional dispatch
SendEmailJob::dispatch_if( $user->wants_email, $user->email, 'Hello', 'Hi!' );
SendEmailJob::dispatch_unless( $maintenance_mode, $user->email, 'Hello', 'Hi!' );
// Chain from a job class
FetchDataJob::with_chain( [
new ProcessDataJob(),
new NotifyCompleteJob(),
] )->dispatch();
Ιδιότητες εργασιών
Οι κλάσεις εργασιών μπορούν να δηλώνουν δημόσιες ιδιότητες, τις οποίες ο worker διαβάζει μέσω ανάκλασης για να παρακάμπτει τη συμπεριφορά επανάληψης και χρονικού ορίου.
| Ιδιότητα | Τύπος | Περιγραφή |
|---|---|---|
$tries |
int |
Μέγιστος αριθμός προσπαθειών πριν η εργασία τεθεί σε αναμονή |
$timeout |
int |
Μέγιστος χρόνος εκτέλεσης σε δευτερόλεπτα (απαιτεί το pcntl) |
$backoff |
array |
Κλιμακωτές καθυστερήσεις σε δευτερόλεπτα για κάθε προσπάθεια επανάληψης |
class ImportProductsJob implements Job {
use Dispatchable;
public int $tries = 5;
public int $timeout = 120;
public array $backoff = [ 10, 30, 60, 120 ];
// ...
}
Άγκιστρο failed()
Όταν μια εργασία τίθεται σε αναμονή αφού εξαντληθούν όλες οι επαναλήψεις, ο worker καλεί μια μέθοδο failed() στο στιγμιότυπο της εργασίας, εφόσον έχει οριστεί.
public function failed( \Throwable $exception ): void {
error_log( "Job failed: {$exception->getMessage()}" );
}
Ενσωματωμένο ενδιάμεσο λογισμικό
Όλες οι κλάσεις ενδιάμεσου λογισμικού υλοποιούν το Contracts\Middleware και βρίσκονται στον χώρο ονομάτων Queuety\Middleware.
| Κλάση | Περιγραφή |
|---|---|
RateLimited( int $max, int $window ) |
Επιβάλλει όριο ρυθμού $max εκτελέσεων ανά $window δευτερόλεπτα |
Timeout( int $seconds ) |
Τερματίζει την εργασία μετά από $seconds δευτερόλεπτα (απαιτεί το pcntl) |
UniqueJob( ?string $key ) |
Αποτρέπει την ταυτόχρονη εκτέλεση μέσω κλειδώματος βάσης δεδομένων |
WithoutOverlapping( string $key, int $release_after ) |
Αποτρέπει επικαλυπτόμενες εκτελέσεις με αυτόματη λήξη κλειδώματος |
ThrottlesExceptions( int $max_attempts, int $decay_minutes ) |
Περιορίζει τις εξαιρέσεις ώστε να αποτρέπονται μαζικές αποτυχίες εργασιών όταν μια εξωτερική υπηρεσία είναι εκτός λειτουργίας |
Δείτε το Ενδιάμεσο λογισμικό για λεπτομέρειες χρήσης και παραδείγματα.
Απαριθμήσεις
Priority
enum Priority: int {
case Low = 0;
case Normal = 1;
case High = 2;
case Urgent = 3;
}
JobStatus
enum JobStatus: string {
case Pending = 'pending';
case Processing = 'processing';
case Completed = 'completed';
case Failed = 'failed';
case Buried = 'buried';
}
WorkflowStatus
enum WorkflowStatus: string {
case Running = 'running';
case Completed = 'completed';
case Failed = 'failed';
case Paused = 'paused';
case WaitingForSignal = 'waiting_for_signal';
case WaitingForWorkflows = 'waiting_for_workflows';
case Cancelled = 'cancelled';
}
StateMachineStatus
enum StateMachineStatus: string {
case Running = 'running';
case WaitingEvent = 'waiting_event';
case Completed = 'completed';
case Failed = 'failed';
case Paused = 'paused';
case Cancelled = 'cancelled';
}
BackoffStrategy
enum BackoffStrategy: string {
case Fixed = 'fixed';
case Linear = 'linear';
case Exponential = 'exponential';
}
ForEachMode
enum ForEachMode: string {
case All = 'all';
case FirstSuccess = 'first_success';
case Quorum = 'quorum';
}
WaitMode
enum WaitMode: string {
case All = 'all';
case Any = 'any';
case Quorum = 'quorum';
}
LogEvent
enum LogEvent: string {
case Started = 'started';
case Completed = 'completed';
case Failed = 'failed';
case Buried = 'buried';
case Retried = 'retried';
case WorkflowStarted = 'workflow_started';
case WorkflowCompleted = 'workflow_completed';
case WorkflowFailed = 'workflow_failed';
case WorkflowPaused = 'workflow_paused';
case WorkflowResumed = 'workflow_resumed';
case WorkflowCancelled = 'workflow_cancelled';
case WorkflowRewound = 'workflow_rewound';
case WorkflowForked = 'workflow_forked';
case WorkflowDeadlineExceeded = 'workflow_deadline_exceeded';
case Debug = 'debug';
}
OverlapPolicy
enum OverlapPolicy: string {
case Allow = 'allow';
case Skip = 'skip';
case Buffer = 'buffer';
}
Δείτε τον Προγραμματισμό για λεπτομέρειες σχετικά με τη λειτουργία κάθε πολιτικής.
Χαρακτηριστικά
#[QueuetyHandler]
PHP χαρακτηριστικό 8 για αυτόματη καταχώριση. Δείτε τα Χαρακτηριστικά PHP.
use Queuety\Attributes\QueuetyHandler;
#[QueuetyHandler( name: 'send_email', queue: 'emails', max_attempts: 5 )]
class SendEmailHandler implements Handler {
// ...
}
Γέφυρα CLI
Queuety::cli_command()
Επιστρέφει το δημοσιευμένο όνομα της ριζικής εντολής WP-CLI.
Η προεπιλεγμένη ριζική εντολή είναι queuety. Ορίστε το QUEUETY_CLI_COMMAND πριν από την εκκίνηση του Queuety, αν η εντολή πρέπει να δημοσιευτεί με διαφορετικό όνομα.
Queuety::cli_command_map()
Επιστρέφει τον σειριοποιήσιμο κατάλογο Queuety CLI για συστήματα δοκιμών που χρειάζονται να κατανοήσουν τις διαθέσιμες εντολές χωρίς να εξετάζουν τις κλάσεις WP-CLI.
Κάθε καταχώριση περιλαμβάνει:
- ένα σταθερό αναγνωριστικό λειτουργίας
- τη σχετική διαδρομή CLI
- την κλάση χειριστή και τη μέθοδο WP-CLI
- τους πιθανούς στόχους εκτέλεσης
- τον προσαρμογέα που κανονικοποιεί τα ακατέργαστα ορίσματα CLI σε σχέδιο εκτέλεσης
Queuety::resolve_cli_command( $path, $args, $assoc_args )
Μετατρέπει μια αναλυμένη κλήση CLI στο σχέδιο εκτέλεσης που πρέπει να εκτελέσει το σύστημα δοκιμών.
$plan = Queuety::resolve_cli_command(
[ 'workflow', 'export' ],
[ '42' ],
[ 'output' => '/tmp/workflow.json' ]
);
echo $plan['callable']; // Queuety\Queuety::export_workflow_to_file
print_r( $plan['arguments'] );
Τα σχέδια εκτέλεσης λαμβάνουν υπόψη τη μεταφορά:
- οι εντολές επιλύονται σε δημόσιες κλήσιμες λειτουργίες PHP με κανονικοποιημένα ορίσματα
- ο κατάλογος παραθέτει εκ των προτέρων όλους τους πιθανούς στόχους εκτέλεσης, ενώ τα
callableκαιtransportπροσδιορίζουν τον κλάδο που επιλέχθηκε για την αναλυμένη είσοδο
Αυτή είναι η τυπική χρήση του Queuety για συστήματα δοκιμών πρακτόρων: σταθερό αναγνωριστικό λειτουργίας, δημόσιος στόχος API και κανονικοποίηση από τον προσαρμογέα για ζητήματα ειδικά του CLI, όπως οι προεπιλογές ουράς, η αποκωδικοποίηση ωφέλιμου φορτίου JSON, η επιλογή κλάδου της ομάδας worker και ο χειρισμός αρχείων εξαγωγής ροών εργασιών.