Minion::Command::minion::worker - Minion worker command
Contents
Attributes
Minion::Command::minion::worker inherits all attributes from Mojolicious::Command and implements the
following new ones.
description
my $description = $worker->description;
$worker = $worker->description('Foo');
Short description of this command, used for the command list.
usage
my $usage = $worker->usage;
$worker = $worker->usage('Foo');
Usage information for this command, used for the help screen.
Description
Minion::Command::minion::worker starts a Minion worker. You can have as many workers as you like.
Job Signals
The job processes spawned by the Minion::Command::minion::worker process can be controlled at runtime
with the following signals.
INT,TERM
This signal starts out with the operating system default and allows for jobs to install a custom signal
handler to stop gracefully.
USR1,USR2
These signals start out being ignored and allow for jobs to install custom signal handlers.
Methods
Minion::Command::minion::worker inherits all methods from Mojolicious::Command and implements the
following new ones.
run
$worker->run(@ARGV);
Run this command.
Name
Minion::Command::minion::worker - Minion worker command
Remote Control Commands
The Minion::Command::minion::worker process can be controlled at runtime through
Minion::Command::minion::job, from anywhere in the network, by broadcasting the following remote control
commands.
jobs
$ ./myapp.pl minion job -b jobs -a '[10]'
$ ./myapp.pl minion job -b jobs -a '[10]' 23
Instruct one or more workers to change the number of jobs to perform concurrently. Setting this value to
0 will effectively pause the worker. That means all current jobs will be finished, but no new ones
accepted, until the number is increased again.
kill
$ ./myapp.pl minion job -b kill -a '["INT", 10025]'
$ ./myapp.pl minion job -b kill -a '["INT", 10025]' 23
Instruct one or more workers to send a signal to a job that is currently being performed. This command
will be ignored by workers that do not have a job matching the id. That means it is safe to broadcast
this command to all workers.
stop
$ ./myapp.pl minion job -b stop -a '[10025]'
$ ./myapp.pl minion job -b stop -a '[10025]' 23
Instruct one or more workers to stop a job that is currently being performed immediately. This command
will be ignored by workers that do not have a job matching the id. That means it is safe to broadcast
this command to all workers.
See Also
Minion, Minion::Guide, <https://minion.pm>, Mojolicious::Guides, <https://mojolicious.org>.
perl v5.40.0 2024-12-20 Minion::Command::minion::worker(3pm)
Synopsis
Usage: APPLICATION minion worker [OPTIONS]
./myapp.pl minion worker
./myapp.pl minion worker -m production -I 15 -C 5 -R 3600 -j 10
./myapp.pl minion worker -q important -q default
Options:
-C, --command-interval <seconds> Worker remote control command interval,
defaults to 10
-D, --dequeue-timeout <seconds> Maximum amount of time to wait for
jobs, defaults to 5
-h, --help Show this summary of available options
--home <path> Path to home directory of your
application, defaults to the value of
MOJO_HOME or auto-detection
-I, --heartbeat-interval <seconds> Heartbeat interval, defaults to 300
-j, --jobs <number> Maximum number of jobs to perform
parallel in forked worker processes
(not including spare processes),
defaults to 4
-m, --mode <name> Operating mode for your application,
defaults to the value of
MOJO_MODE/PLACK_ENV or "development"
-q, --queue <name> One or more queues to get jobs from,
defaults to "default"
-R, --repair-interval <seconds> Repair interval, up to half of this
value can be subtracted randomly to
make sure not all workers repair at the
same time, defaults to 21600 (6 hours)
-s, --spare <number> Number of spare worker processes to
reserve for high priority jobs,
defaults to 1
-S, --spare-min-priority <number> Minimum priority of jobs to use spare
worker processes for, defaults to 1
Worker Signals
The Minion::Command::minion::worker process can be controlled at runtime with the following signals.
INT,TERM
Stop gracefully after finishing the current jobs.
QUIT
Stop immediately without finishing the current jobs.
