|
NAMEMinion::Backend - Backend base class SYNOPSIS package Minion::Backend::MyBackend;
use Mojo::Base 'Minion::Backend';
sub broadcast {...}
sub dequeue {...}
sub enqueue {...}
sub fail_job {...}
sub finish_job {...}
sub history {...}
sub list_jobs {...}
sub list_locks {...}
sub list_workers {...}
sub lock {...}
sub note {...}
sub receive {...}
sub register_worker {...}
sub remove_job {...}
sub repair {...}
sub reset {...}
sub retry_job {...}
sub stats {...}
sub unlock {...}
sub unregister_worker {...}
DESCRIPTIONMinion::Backend is an abstract base class for Minion backends, like Minion::Backend::Pg. ATTRIBUTESMinion::Backend implements the following attributes. minionmy $minion = $backend->minion; $backend = $backend->minion(Minion->new); Minion object this backend belongs to. Note that this attribute is weakened. METHODSMinion::Backend inherits all methods from Mojo::Base and implements the following new ones. auto_retry_jobmy $bool = $backend->auto_retry_job($job_id, $retries, $attempts); Automatically "retry" job with "backoff" in Minion if there are attempts left, used to implement backends like Minion::Backend::Pg. broadcast my $bool = $backend->broadcast('some_command');
my $bool = $backend->broadcast('some_command', [@args]);
my $bool = $backend->broadcast('some_command', [@args], [$id1, $id2, $id3]);
Broadcast remote control command to one or more workers. Meant to be overloaded in a subclass. dequeue my $job_info = $backend->dequeue($worker_id, 0.5);
my $job_info = $backend->dequeue($worker_id, 0.5, {queues => ['important']});
Wait a given amount of time in seconds for a job, dequeue it and transition from "inactive" to "active" state, or return "undef" if queues were empty. Meant to be overloaded in a subclass. These options are currently available:
These fields are currently available: enqueue my $job_id = $backend->enqueue('foo');
my $job_id = $backend->enqueue(foo => [@args]);
my $job_id = $backend->enqueue(foo => [@args] => {priority => 1});
Enqueue a new job with "inactive" state. Meant to be overloaded in a subclass. These options are currently available:
fail_job my $bool = $backend->fail_job($job_id, $retries);
my $bool = $backend->fail_job($job_id, $retries, 'Something went wrong!');
my $bool = $backend->fail_job(
$job_id, $retries, {whatever => 'Something went wrong!'});
Transition from "active" to "failed" state with or without a result, and if there are attempts remaining, transition back to "inactive" with a delay based on "backoff" in Minion. Meant to be overloaded in a subclass. finish_job my $bool = $backend->finish_job($job_id, $retries);
my $bool = $backend->finish_job($job_id, $retries, 'All went well!');
my $bool = $backend->finish_job(
$job_id, $retries, {whatever => 'All went well!'});
Transition from "active" to "finished" state with or without a result. Meant to be overloaded in a subclass. historymy $history = $backend->history; Get history information for job queue. Meant to be overloaded in a subclass. These fields are currently available:
list_jobs my $results = $backend->list_jobs($offset, $limit);
my $results = $backend->list_jobs($offset, $limit, {states => ['inactive']});
Returns the information about jobs in batches. Meant to be overloaded in a subclass. # Get the total number of results (without limit)
my $num = $backend->list_jobs(0, 100, {queues => ['important']})->{total};
# Check job state
my $results = $backend->list_jobs(0, 1, {ids => [$job_id]});
my $state = $results->{jobs}[0]{state};
# Get job result
my $results = $backend->list_jobs(0, 1, {ids => [$job_id]});
my $result = $results->{jobs}[0]{result};
These options are currently available:
These fields are currently available:
list_locks my $results = $backend->list_locks($offset, $limit);
my $results = $backend->list_locks($offset, $limit, {names => ['foo']});
Returns information about locks in batches. Meant to be overloaded in a subclass. # Get the total number of results (without limit)
my $num = $backend->list_locks(0, 100, {names => ['bar']})->{total};
# Check expiration time
my $results = $backend->list_locks(0, 1, {names => ['foo']});
my $expires = $results->{locks}[0]{expires};
These options are currently available:
These fields are currently available: list_workers my $results = $backend->list_workers($offset, $limit);
my $results = $backend->list_workers($offset, $limit, {ids => [23]});
Returns information about workers in batches. Meant to be overloaded in a subclass. # Get the total number of results (without limit)
my $num = $backend->list_workers(0, 100)->{total};
# Check worker host
my $results = $backend->list_workers(0, 1, {ids => [$worker_id]});
my $host = $results->{workers}[0]{host};
These options are currently available:
These fields are currently available:
lock my $bool = $backend->lock('foo', 3600);
my $bool = $backend->lock('foo', 3600, {limit => 20});
Try to acquire a named lock that will expire automatically after the given amount of time in seconds. An expiration time of 0 can be used to check if a named lock already exists without creating one. Meant to be overloaded in a subclass. These options are currently available:
note my $bool = $backend->note($job_id, {mojo => 'rocks', minion => 'too'});
Change one or more metadata fields for a job. Setting a value to "undef" will remove the field. Meant to be overloaded in a subclass. receivemy $commands = $backend->receive($worker_id); Receive remote control commands for worker. Meant to be overloaded in a subclass. register_worker my $worker_id = $backend->register_worker;
my $worker_id = $backend->register_worker($worker_id);
my $worker_id = $backend->register_worker(
$worker_id, {status => {queues => ['default', 'important']}});
Register worker or send heartbeat to show that this worker is still alive. Meant to be overloaded in a subclass. These options are currently available:
remove_jobmy $bool = $backend->remove_job($job_id); Remove "failed", "finished" or "inactive" job from queue. Meant to be overloaded in a subclass. repair$backend->repair; Repair worker registry and job queue if necessary. Meant to be overloaded in a subclass. reset $backend->reset({all => 1});
Reset job queue. Meant to be overloaded in a subclass. These options are currently available: retry_job my $bool = $backend->retry_job($job_id, $retries);
my $bool = $backend->retry_job($job_id, $retries, {delay => 10});
Transition job back to "inactive" state, already "inactive" jobs may also be retried to change options. Meant to be overloaded in a subclass. These options are currently available:
statsmy $stats = $backend->stats; Get statistics for the job queue. Meant to be overloaded in a subclass. These fields are currently available:
unlock my $bool = $backend->unlock('foo');
Release a named lock. Meant to be overloaded in a subclass. unregister_worker$backend->unregister_worker($worker_id); Unregister worker. Meant to be overloaded in a subclass. SEE ALSOMinion, Minion::Guide, <https://minion.pm>, Mojolicious::Guides, <https://mojolicious.org>.
|