Minion::Command::minion::worker(3)

NAME
Minion::Command::minion::worker - Minion worker command

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

DESCRIPTION
Minion::Command::minion::worker starts a Minion worker. You can have as many workers as you like.

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.

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.

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.

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.

METHODS
Minion::Command::minion::worker inherits all methods from Mojolicious::Command and implements the following new ones.

  run
  $worker->run(@ARGV);

Run this command.

SEE ALSO
Minion, Minion::Guide, <https://minion.pm>, Mojolicious::Guides, <https://mojolicious.org>.