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

PHP API

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

PHP
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.

PHP
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 των ονομάτων των πινάκων χρόνου εκτέλεσης ανά σύνδεση:

PHP
$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 για την ενεργή σύνδεση.

PHP
Queuety::init( $conn );
Queuety::ensure_schema();

Για το πλήρες μοντέλο και το όριο του WordPress, δείτε την ενότητα Αυτόνομη χρήση.

Εργασίες

Queuety::dispatch( $handler, $payload )

Αποστείλετε μια εργασία. Δέχεται είτε μια συμβολοσειρά ονόματος χειριστή είτε μια παρουσία Contracts\Job. Επιστρέφει ένα builder PendingJob για αλυσιδωτή προσθήκη επιλογών.

PHP
// 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 )

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

PHP
// 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 πολλών γραμμών.

PHP
$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 για την αποστολή μιας ομάδας εργασιών με συναρτήσεις επανάκλησης και παρακολούθηση προόδου. Για όλες τις λεπτομέρειες, δείτε την ενότητα Ομαδοποίηση.

PHP
$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.

PHP
$batch = Queuety::find_batch( $batch_id );

if ( null !== $batch ) {
    echo $batch->progress() . '% complete';
}

Έλεγχος worker

Queuety::run_worker( $queue = 'default', $once = false )

Εκτελεί απευθείας έναν βρόχο worker.

PHP
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).

PHP
Queuety::run_worker_pool( 4, 'providers' );

Queuety::run_auto_scaling_worker_pool( $min_workers, $max_workers, $queue = 'default' )

Εκτελεί απευθείας μια προσαρμοστική ομάδα worker. Ισχύουν οι ίδιες απαιτήσεις με το run_worker_pool().

PHP
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 για διαδοχική εκτέλεση εργασιών. Κάθε εργασία εξαρτάται από την επιτυχή ολοκλήρωση της προηγούμενης.

PHP
$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.

PHP
Queuety::retry( 42 );

Queuety::retry_buried()

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

PHP
$count = Queuety::retry_buried();

Queuety::purge( $older_than_days )

Εκκαθαρίζει τις ολοκληρωμένες εργασίες. Επιστρέφει τον αριθμό των εργασιών που εκκαθαρίστηκαν.

PHP
$count = Queuety::purge();     // uses QUEUETY_RETENTION_DAYS
$count = Queuety::purge( 30 ); // purge jobs older than 30 days

Ουρές

Queuety::stats( $queue )

Λαμβάνει τα πλήθη εργασιών ομαδοποιημένα ανά κατάσταση.

PHP
$stats = Queuety::stats();          // all queues
$stats = Queuety::stats( 'emails' ); // specific queue
// ['pending' => 12, 'processing' => 3, 'completed' => 150, 'failed' => 2, 'buried' => 1]

Queuety::buried( $queue )

Λαμβάνει όλες τις θαμμένες εργασίες.

PHP
$jobs = Queuety::buried();
$jobs = Queuety::buried( 'emails' );

Queuety::pause( $queue )

Παύει μια ουρά ώστε να την παραλείπουν οι workers.

PHP
Queuety::pause( 'emails' );

Queuety::resume( $queue )

Συνεχίζει μια ουρά που βρίσκεται σε παύση.

PHP
Queuety::resume( 'emails' );

Queuety::is_paused( $queue )

Ελέγχει αν μια ουρά βρίσκεται σε παύση.

PHP
if ( Queuety::is_paused( 'emails' ) ) {
    // Queue is paused
}

Ροές εργασιών

Queuety::workflow( $name )

Ξεκινήστε να δημιουργείτε μια ροή εργασιών. Επιστρέφει ένα WorkflowBuilder.

PHP
$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.

PHP
$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 )

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

PHP
Queuety::retry_workflow( $workflow_id );

Προκαλεί το RuntimeException αν η ροή εργασίας έχει ήδη αποκατασταθεί μετά από αποτυχία.

Queuety::pause_workflow( $workflow_id )

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

PHP
Queuety::pause_workflow( $workflow_id );

Queuety::resume_workflow( $workflow_id )

Συνεχίστε μια ροή εργασίας που βρίσκεται σε παύση.

PHP
Queuety::resume_workflow( $workflow_id );

Queuety::cancel_workflow( $workflow_id )

Ακυρώστε μια ροή εργασίας και εκτελέστε τυχόν καταχωρισμένους χειριστές καθαρισμού. Ορίζει την κατάσταση σε cancelled και θέτει σε αδράνεια όλες τις εκκρεμείς και υπό επεξεργασία εργασίες της ροής εργασίας.

PHP
Queuety::cancel_workflow( $workflow_id );

Προκαλεί το RuntimeException αν η ροή εργασίας είναι ήδη completed ή cancelled. Δείτε την ενότητα Ακύρωση για λεπτομέρειες.

Queuety::rewind_workflow( $workflow_id, $to_step )

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

PHP
Queuety::rewind_workflow( $workflow_id, to_step: 1 );

Προκαλεί το RuntimeException αν δεν υπάρχει καταγεγραμμένη κατάσταση για το βήμα-στόχο. Απαιτείται το Αρχείο καταγραφής συμβάντων ροής εργασίας. Δείτε την ενότητα Μετακίνηση στον χρόνο για λεπτομέρειες.

Queuety::fork_workflow( $workflow_id )

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

PHP
$forked_id = Queuety::fork_workflow( $workflow_id );

Η διακλαδωμένη ροή εργασίας αποκτά δικό της αναγνωριστικό και λειτουργεί ανεξάρτητα από την αρχική. Δείτε την ενότητα Διακλάδωση για λεπτομέρειες.

Queuety::export_workflow( $workflow_id )

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

PHP
$data = Queuety::export_workflow( $workflow_id );

Δείτε την ενότητα Εξαγωγή και επανάληψη για τη δομή JSON και τις περιπτώσεις χρήσης.

Queuety::replay_workflow( $data )

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

PHP
$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.

PHP
Queuety::replace_wp_cron();

Λειτουργεί μόνο όταν έχει φορτωθεί το WordPress. Δείτε την ενότητα Αντικατάσταση WP-Cron για λεπτομέρειες.

Queuety::restore_wp_cron()

Επαναφέρετε την προεπιλεγμένη συμπεριφορά του WordPress cron αφαιρώντας τα hooks γεφύρωσης Queuety cron.

PHP
Queuety::restore_wp_cron();

Δείτε την ενότητα Αντικατάσταση WP-Cron για τους περιορισμούς.

Queuety::signal( $workflow_id, $name, $data )

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

PHP
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() για ροές εγκρίσεων.

PHP
Queuety::approve_workflow( $workflow_id, [
    'reviewer' => 'editor@example.com',
] );

Queuety::reject_workflow( $workflow_id, $data = [], $signal_name = 'rejected' )

Σημασιολογικό περιτύλιγμα γύρω από το signal() για ροές απορρίψεων.

PHP
Queuety::reject_workflow( $workflow_id, [
    'reason' => 'needs citations',
] );

Queuety::submit_workflow_input( $workflow_id, $data = [], $signal_name = 'input' )

Σημασιολογικό περιτύλιγμα γύρω από το signal() για δομημένη ανθρώπινη εισαγωγή.

PHP
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 = [] )

Αποθηκεύστε ένα μόνιμο τεχνούργημα για μια ροή εργασίας.

PHP
Queuety::put_artifact(
    $workflow_id,
    'research_brief',
    [ 'summary' => 'done' ],
    'json',
    metadata: [ 'source' => 'agent' ],
);

Queuety::put_current_artifact( $artifact_key, $content, $kind = 'json', $metadata = [] )

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

PHP
Queuety::put_current_artifact(
    'draft',
    [ 'status' => 'ready' ],
    'json',
);

Queuety::workflow_artifact( $workflow_id, $artifact_key )

Ανακτήστε ένα αποθηκευμένο τεχνούργημα για μια ροή εργασίας.

PHP
$artifact = Queuety::workflow_artifact( $workflow_id, 'draft' );

Queuety::workflow_artifacts( $workflow_id, $include_content = false )

Παραθέστε τα τεχνουργήματα μιας ροής εργασίας.

PHP
$artifacts = Queuety::workflow_artifacts( $workflow_id );

Queuety::delete_workflow_artifact( $workflow_id, $artifact_key )

Διαγράψτε ένα τεχνούργημα μιας ροής εργασίας.

PHP
Queuety::delete_workflow_artifact( $workflow_id, 'draft' );

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

Queuety::machine( $name )

Ξεκινήστε τη δημιουργία μιας μηχανής καταστάσεων. Επιστρέφει ένα StateMachineBuilder.

PHP
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(). Αυτή η μέθοδος χαμηλότερου επιπέδου επιτρέπει στους προσαρμογείς να εκκινούν μια μηχανή χωρίς άμεση εξάρτηση από το εργαλείο δόμησης.

PHP
$machine_id = Queuety::dispatch_state_machine_definition(
    $definition,
    [ 'thread_id' => 42 ],
    [ 'idempotency_key' => 'thread:42' ],
);

Queuety::machine_status( $machine_id )

Λάβετε την τρέχουσα κατάσταση της μηχανής. Επιστρέφει ένα αντικείμενο StateMachineState ή null.

PHP
$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_version
  • definition_hash
  • idempotency_key
  • error_message
  • current_action
  • terminal_status

Queuety::machine_event( $machine_id, $event_name, $payload = [] )

Στείλτε ένα εξωτερικό συμβάν σε μια μηχανή που βρίσκεται σε αναμονή.

PHP
Queuety::machine_event(
    $machine_id,
    'approve',
    [
        'approved' => true,
        'reviewer' => 'editor@example.com',
    ]
);

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

Queuety::list_machines( $limit = 50, $status = null )

Παραθέστε τις αποθηκευμένες εγγραφές μηχανών για επιθεώρηση.

PHP
$machines = Queuety::list_machines();
$waiting  = Queuety::list_machines( status: 'waiting_event' );

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

Queuety::machine_timeline( $machine_id, $limit = 100, $offset = 0 )

Λάβετε το μόνιμο χρονολόγιο συμβάντων για μία μηχανή.

PHP
$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 αποσφαλματωτή μηχανής καταστάσεων.

PHP
$trace = Queuety::machine_trace( $machine_id );

Το ίχνος περιέχει machine, ομαδοποιημένα states, ακατέργαστα events, συσχετισμένα jobs ενεργειών, logs, artifacts και chunks.

Queuety::machine_state_at( $machine_id, $event_id )

Λάβετε τη δημόσια κατάσταση μετά από συγκεκριμένο συμβάν ίχνους μηχανής ή null αν δεν βρεθεί.

PHP
$state = Queuety::machine_state_at( $machine_id, $event_id );

Δείτε την ενότητα Μηχανές καταστάσεων για το μοντέλο κύκλου ζωής και τα μοτίβα χρήσης.

Πρότυπα ροών εργασίας

Queuety::define_workflow( $name )

Δημιουργήστε ένα εργαλείο δόμησης ροής εργασίας για χρήση ως πρότυπο.

PHP
$builder = Queuety::define_workflow( 'onboarding' )
    ->then( CreateAccountHandler::class )
    ->then( SendWelcomeEmailHandler::class );

Queuety::register_workflow_template( $builder )

Καταχωρίστε ένα πρότυπο ροής εργασίας.

PHP
Queuety::register_workflow_template( $builder );

Queuety::run_workflow( $name, $payload, $options = [] )

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

PHP
$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(). Αυτή η μέθοδος χαμηλότερου επιπέδου επιτρέπει σε επαναχρησιμοποιήσιμους προσαρμογείς να κάνουν αποστολή ενός σειριοποιημένου ορισμού ροής εργασίας χωρίς να εξαρτώνται από εσωτερικές μεθόδους του διαχειριστή ροών εργασίας.

PHP
$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 που κάνει αποστολή μιας ροής εργασίας.

PHP
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()

Λάβετε το μητρώο προτύπων ροών εργασίας.

PHP
$registry = Queuety::workflow_templates();
$template = $registry->get( 'onboarding' ); // WorkflowTemplate or null

Queuety::load_workflows( $directory, $recursive )

Φορτώστε και καταχωρίστε όλα τα αρχεία ροών εργασίας από έναν κατάλογο. Κάθε αρχείο .php θα πρέπει να επιστρέφει ένα WorkflowBuilder. Επιστρέφει τον αριθμό των καταχωρισμένων ροών εργασίας.

PHP
$count = Queuety::load_workflows( __DIR__ . '/workflows/' );
$count = Queuety::load_workflows( __DIR__ . '/workflows/', recursive: true );

Queuety::load_workflow_file( $file_path )

Φορτώστε και καταχωρίστε ένα αρχείο ροής εργασίας. Επιστρέφει το WorkflowTemplate ή το null αν το αρχείο δεν επιστρέφει εργαλείο δόμησης.

PHP
$template = Queuety::load_workflow_file( __DIR__ . '/workflows/onboard-user.php' );

Προγραμματισμός

Queuety::schedule( $handler, $payload )

Δημιουργήστε ένα επαναλαμβανόμενο χρονοδιάγραμμα. Επιστρέφει ένα εργαλείο δόμησης PendingSchedule.

PHP
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.

PHP
$scheduler = Queuety::scheduler();
$schedules = $scheduler->list();
$scheduler->remove( 'handler_name' );
$count = $scheduler->tick(); // manually trigger

Καταχώριση χειριστών

Queuety::register( $name, $class )

Καταχωρίστε μια κλάση χειριστή με ένα όνομα.

PHP
Queuety::register( 'send_email', SendEmailHandler::class );

Queuety::discover_handlers( $directory, $namespace )

Εντοπίστε αυτόματα και καταχωρίστε κλάσεις χειριστών από έναν κατάλογο. Επιστρέφει τον αριθμό των καταχωρισμένων χειριστών.

PHP
$count = Queuety::discover_handlers( __DIR__ . '/handlers', 'MyPlugin\\Handlers' );

Queuety::registry()

Λάβετε το μητρώο χειριστών.

PHP
$registry = Queuety::registry();

Παρατηρησιμότητα

Queuety::logger()

Λάβετε την παρουσία Logger για αναζήτηση καταχωρίσεων αρχείου καταγραφής.

PHP
$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.

PHP
$stats = Queuety::metrics()->handler_stats( 60 ); // last 60 minutes

Queuety::webhook_notifier()

Λάβετε την παρουσία WebhookNotifier.

PHP
$notifier = Queuety::webhook_notifier();
$id       = $notifier->register( 'job.buried', 'https://hooks.slack.com/...' );
$webhooks = $notifier->list();
$notifier->remove( $id );

Queuety::rate_limiter()

Λάβετε την παρουσία RateLimiter.

PHP
$limiter = Queuety::rate_limiter();
$limiter->register( 'call_openai', 60, 60 );

Προσωρινή μνήμη

Queuety::cache()

Λάβετε την παρουσία του ενεργού συστήματος προσωρινής μνήμης.

PHP
$cache = Queuety::cache();
$cache->set( 'my_key', 'my_value', 60 );
$value = $cache->get( 'my_key' );

Queuety::set_cache( $cache )

Παρακάμψτε το σύστημα προσωρινής μνήμης. Καλέστε πριν από το Queuety::init() για να χρησιμοποιήσετε μια προσαρμοσμένη υλοποίηση.

PHP
Queuety::set_cache( new RedisCache() );
Queuety::init( $connection );

QUEUETY_CACHE_TTL

Προεπιλεγμένος χρόνος ζωής (TTL) της προσωρινής μνήμης σε δευτερόλεπτα (προεπιλογή: 5). Ορίστε αυτήν τη σταθερά στο wp-config.php για να αλλάξετε τον προεπιλεγμένο TTL που χρησιμοποιούν οι εσωτερικές λειτουργίες προσωρινής μνήμης.

PHP
define( 'QUEUETY_CACHE_TTL', 10 );

Δείτε την ενότητα Προσωρινή αποθήκευση για λεπτομέρειες σχετικά με τα συστήματα υποστήριξης και τον αυτόματο εντοπισμό.

Αρχείο καταγραφής συμβάντων μηχανής καταστάσεων

Queuety::machine_events()

Λάβετε την παρουσία StateMachineEventLog.

PHP
$log = Queuety::machine_events();

Αρχείο καταγραφής συμβάντων ροής εργασίας

Queuety::workflow_events()

Λάβετε την παρουσία WorkflowEventLog.

PHP
$log = Queuety::workflow_events();

Queuety::workflow_timeline( $workflow_id, $limit = 100, $offset = 0 )

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

PHP
$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 αποσφαλματωτή ροής εργασίας.

PHP
$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 αν δεν βρεθεί.

PHP
$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() καταγράφει επίσης εικονικά μεταδεδομένα παρτίδων· οι αλυσίδες ελέγχονται μέσω των επιμέρους εργασιών που αποστέλλουν.

PHP
$fake = Queuety::fake();
SendEmailJob::dispatch( 'user@example.com', 'Hello', 'Hi!' );
$fake->assert_pushed( SendEmailJob::class );

Queuety::reset()

Επαναφέρετε όλη την εσωτερική κατάσταση, συμπεριλαμβανομένου του εικονικού συστήματος ουράς. Καλέστε το στο tearDown().

PHP
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

Διεπαφή για απλούς χειριστές εργασιών.

PHP
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

Διεπαφή για χειριστές βημάτων ροής εργασίας.

PHP
interface Step {
    public function handle( array $state ): array;
    public function config(): array;
}

Το config() μπορεί να επιστρέψει max_attempts, backoff, concurrency_group, concurrency_limit και cost_units.

Contracts\ForEachHandler

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

PHP
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

Προαιρετικός μειωτής για τα αποτελέσματα επανάληψης για κάθε στοιχείο.

PHP
namespace Queuety\Contracts;

interface ForEachReducer {
    public function reduce( array $state, array $for_each ): array;
}

Contracts\Compensation

Διεπαφή για χειριστές αποκατάστασης βημάτων.

PHP
namespace Queuety\Contracts;

interface Compensation {
    public function handle( array $state ): void;
}

Contracts\RepeatCondition

Διεπαφή για κατηγορήματα βρόχου που χρησιμοποιούνται από τα repeat_until() και repeat_while() όταν η σύγκριση κλειδιού κατάστασης είναι υπερβολικά περιορισμένη.

PHP
namespace Queuety\Contracts;

interface RepeatCondition {
    public function matches( array $state ): bool;
}

Contracts\StateAction

Διεπαφή για ενέργειες εισόδου σε κατάσταση που μπαίνουν σε ουρά.

PHP
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

Διεπαφή για συνθήκες ελέγχου μεταβάσεων μηχανής καταστάσεων.

PHP
namespace Queuety\Contracts;

interface StateGuard {
    public function allows( array $state, array $event_payload, string $event, array $payload = [] ): bool;
}

Contracts\Job

Διεπαφή για αυτοτελείς κλάσεις εργασιών που μπορούν να αποσταλούν. Οι κλάσεις εργασιών ενσωματώνουν το φορτίο τους σε δημόσιες ιδιότητες και τη λογική εκτέλεσής τους στο handle().

PHP
namespace Queuety\Contracts;

interface Job {
    public function handle(): void;
}

Οι κλάσεις εργασιών μπορούν προαιρετικά να ορίζουν μια μέθοδο middleware() που επιστρέφει έναν πίνακα παρουσιών Contracts\Middleware.

Contracts\Cache

Διεπαφή για συστήματα υποστήριξης προσωρινής μνήμης. Δείτε την ενότητα Προσωρινή αποθήκευση για ενσωματωμένες υλοποιήσεις και προσαρμοσμένα συστήματα υποστήριξης.

PHP
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

Διεπαφή για χειριστές βημάτων ροής εργασιών που παράγουν μια ροή τμημάτων. Κάθε τιμή που αποδίδεται αποθηκεύεται αμέσως στη βάση δεδομένων. Δείτε τα Βήματα ροής.

PHP
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

Διεπαφή για ενδιάμεσο λογισμικό εργασιών. Το ενδιάμεσο λογισμικό περιβάλλει την εκτέλεση εργασιών με μια διοχέτευση τύπου κρεμμυδιού.

PHP
namespace Queuety\Contracts;

interface Middleware {
    public function handle( object $job, \Closure $next ): void;
}

Χαρακτηριστικά

Dispatchable

Παρέχει στατικές μεθόδους αποστολής σε κλάσεις εργασιών που υλοποιούν το Contracts\Job. Τα ορίσματα του κατασκευαστή μεταβιβάζονται για τη δημιουργία της εργασίας.

PHP
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 Ξεκινά μια αλυσίδα από αυτήν την κλάση εργασίας
PHP
// 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 Κλιμακωτές καθυστερήσεις σε δευτερόλεπτα για κάθε προσπάθεια επανάληψης
PHP
class ImportProductsJob implements Job {
    use Dispatchable;

    public int $tries = 5;
    public int $timeout = 120;
    public array $backoff = [ 10, 30, 60, 120 ];

    // ...
}

Άγκιστρο failed()

Όταν μια εργασία τίθεται σε αναμονή αφού εξαντληθούν όλες οι επαναλήψεις, ο worker καλεί μια μέθοδο failed() στο στιγμιότυπο της εργασίας, εφόσον έχει οριστεί.

PHP
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

PHP
enum Priority: int {
    case Low    = 0;
    case Normal = 1;
    case High   = 2;
    case Urgent = 3;
}

JobStatus

PHP
enum JobStatus: string {
    case Pending    = 'pending';
    case Processing = 'processing';
    case Completed  = 'completed';
    case Failed     = 'failed';
    case Buried     = 'buried';
}

WorkflowStatus

PHP
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

PHP
enum StateMachineStatus: string {
    case Running = 'running';
    case WaitingEvent = 'waiting_event';
    case Completed = 'completed';
    case Failed = 'failed';
    case Paused = 'paused';
    case Cancelled = 'cancelled';
}

BackoffStrategy

PHP
enum BackoffStrategy: string {
    case Fixed       = 'fixed';
    case Linear      = 'linear';
    case Exponential = 'exponential';
}

ForEachMode

PHP
enum ForEachMode: string {
    case All = 'all';
    case FirstSuccess = 'first_success';
    case Quorum = 'quorum';
}

WaitMode

PHP
enum WaitMode: string {
    case All    = 'all';
    case Any    = 'any';
    case Quorum = 'quorum';
}

LogEvent

PHP
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

PHP
enum OverlapPolicy: string {
    case Allow  = 'allow';
    case Skip   = 'skip';
    case Buffer = 'buffer';
}

Δείτε τον Προγραμματισμό για λεπτομέρειες σχετικά με τη λειτουργία κάθε πολιτικής.

Χαρακτηριστικά

#[QueuetyHandler]

PHP χαρακτηριστικό 8 για αυτόματη καταχώριση. Δείτε τα Χαρακτηριστικά PHP.

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 στο σχέδιο εκτέλεσης που πρέπει να εκτελέσει το σύστημα δοκιμών.

PHP
$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 και ο χειρισμός αρχείων εξαγωγής ροών εργασιών.