|
NAMEMinion::Worker - Minion worker SYNOPSISuse Minion::Worker; my $worker = Minion::Worker->new(minion => $minion); DESCRIPTIONMinion::Worker performs jobs for Minion. WORKER SIGNALSThe Minion::Worker process can be controlled at runtime with the following signals. INT, TERMStop gracefully after finishing the current jobs. QUITStop immediately without finishing the current jobs. JOB SIGNALSThe job processes spawned by the Minion::Worker process can be controlled at runtime with the following signals. INT, TERMThis signal starts out with the operating system default and allows for jobs to install a custom signal handler to stop gracefully. USR1, USR2These signals start out being ignored and allow for jobs to install custom signal handlers. EVENTSMinion::Worker inherits all events from Mojo::EventEmitter and can emit the following new ones. busy $worker->on(busy => sub ($worker) {
...
});
Emitted in the worker process when it is performing the maximum number of jobs in parallel. $worker->on(busy => sub ($worker) {
my $max = $worker->status->{jobs};
say "Performing $max jobs.";
});
dequeue $worker->on(dequeue => sub ($worker, $job) {
...
});
Emitted in the worker process after a job has been dequeued. $worker->on(dequeue => sub ($worker, $job) {
my $id = $job->id;
say "Job $id has been dequeued.";
});
wait $worker->on(wait => sub ($worker) {
...
});
Emitted in the worker process before it tries to dequeue a job. $worker->on(wait => sub ($worker) {
my $max = $worker->status->{dequeue_timeout};
say "Waiting up to $max seconds for a new job.";
});
ATTRIBUTESMinion::Worker implements the following attributes. commands my $commands = $worker->commands;
$worker = $worker->commands({jobs => sub {...}});
Registered worker remote control commands. idmy $id = $worker->id; $worker = $worker->id($id); Worker id. minionmy $minion = $worker->minion; $worker = $worker->minion(Minion->new); Minion object this worker belongs to. status my $status = $worker->status;
$worker = $worker->status({queues => ['default', 'important']);
Status information to configure workers started with "run" and to share every time "register" is called. METHODSMinion::Worker inherits all methods from Mojo::EventEmitter and implements the following new ones. add_command $worker = $worker->add_command(jobs => sub {...});
Register a worker remote control command. $worker->add_command(foo => sub ($worker, @args) {
...
});
dequeue my $job = $worker->dequeue(0.5);
my $job = $worker->dequeue(0.5 => {queues => ['important']});
Wait a given amount of time in seconds for a job, dequeue Minion::Job object and transition from "inactive" to "active" state, or return "undef" if queues were empty. These options are currently available:
infomy $info = $worker->info; Get worker information. # Check worker host
my $host = $worker->info->{host};
These fields are currently available:
new my $worker = Minion::Worker->new;
my $worker = Minion::Worker->new(status => {foo => 'bar'});
my $worker = Minion::Worker->new({status => {foo => 'bar'}});
Construct a new Minion::Worker object and subscribe to "busy" event with default handler that sleeps for one second. process_commands$worker = $worker->process_commands; Process worker remote control commands. register$worker = $worker->register; Register worker or send heartbeat to show that this worker is still alive. run$worker->run; Run worker and wait for "WORKER SIGNALS". # Start a worker for a special named queue
my $worker = $minion->worker;
$worker->status->{queues} = ['important'];
$worker->run;
These "status" options are currently available:
These remote control "commands" are currently available:
unregister$worker = $worker->unregister; Unregister worker. SEE ALSOMinion, Minion::Guide, <https://minion.pm>, Mojolicious::Guides, <https://mojolicious.org>.
|