NAME
Kevin::Command::kevin::worker - Alternative Minion worker command
VERSION
version 0.7.1
SYNOPSIS
Usage: APPLICATION kevin worker [OPTIONS]
./myapp.pl kevin worker
./myapp.pl kevin worker -f
./myapp.pl kevin worker -m production -I 15 -C 5 -R 3600 -j 10
./myapp.pl kevin 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 5
-f, --fast-start Start processing jobs as fast as
possible and skip repairing on startup
-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,
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)
DESCRIPTION
Kevin::Command::kevin::worker starts a Minion worker. You can have as many workers as you like.
This is a fork of Minion::Command::minion::worker. The differences are:
During immediate stops, the worker stops sending heartbeats, processing remote commands and doing repairs.
During graceful stops, the worker stops doing repairs.
During a stop, when all jobs have finished, the worker will quit promptly (without sleeping).
Allow to disable repairs with
-R 0
.
SIGNALS
The Kevin::Command::kevin::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.
REMOTE CONTROL COMMANDS
The Kevin::Command::kevin::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.
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.
ATTRIBUTES
Kevin::Command::kevin::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.
METHODS
Kevin::Command::kevin::worker inherits all methods from Mojolicious::Command and implements the following new ones.
run
$worker->run(@ARGV);
Run this command.
DEBUGGING
You can set the KEVIN_WORKER_TRACE
environment variable to have some extra diagnostics information printed to $app->log
.
KEVIN_WORKER_TRACE=1
SEE ALSO
Minion, Mojolicious::Guides, http://mojolicious.org.
AUTHOR
Adriano Ferreira <ferreira@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017-2018 by Adriano Ferreira.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.