Provided by: libminion-perl_7.05-1_all bug

NAME

       Minion::Job - Minion job

SYNOPSIS

         use Minion::Job;

         my $job = Minion::Job->new(id => $id, minion => $minion, task => 'foo');

DESCRIPTION

       Minion::Job is a container for Minion jobs.

EVENTS

       Minion::Job inherits all events from Mojo::EventEmitter and can emit the following new
       ones.

   failed
         $job->on(failed => sub {
           my ($job, $err) = @_;
           ...
         });

       Emitted in the worker process managing this job or the process performing it, after it has
       transitioned to the "failed" state.

         $job->on(failed => sub {
           my ($job, $err) = @_;
           say "Something went wrong: $err";
         });

   finished
         $job->on(finished => sub {
           my ($job, $result) = @_;
           ...
         });

       Emitted in the worker process managing this job or the process performing it, after it has
       transitioned to the "finished" state.

         $job->on(finished => sub {
           my ($job, $result) = @_;
           my $id = $job->id;
           say "Job $id is finished.";
         });

   spawn
         $job->on(spawn => sub {
           my ($job, $pid) = @_;
           ...
         });

       Emitted in the worker process managing this job, after a new process has been spawned for
       processing.

         $job->on(spawn => sub {
           my ($job, $pid) = @_;
           my $id = $job->id;
           say "Job $id running in process $pid";
         });

   start
         $job->on(start => sub {
           my $job = shift;
           ...
         });

       Emitted in the process performing this job, after it has been spawned.

         $job->on(start => sub {
           my $job = shift;
           $0 = $job->id;
         });

ATTRIBUTES

       Minion::Job implements the following attributes.

   args
         my $args = $job->args;
         $job     = $job->args([]);

       Arguments passed to task.

   id
         my $id = $job->id;
         $job   = $job->id($id);

       Job id.

   minion
         my $minion = $job->minion;
         $job       = $job->minion(Minion->new);

       Minion object this job belongs to.

   retries
         my $retries = $job->retries;
         $job        = $job->retries(5);

       Number of times job has been retried.

   task
         my $task = $job->task;
         $job     = $job->task('foo');

       Task name.

METHODS

       Minion::Job inherits all methods from Mojo::EventEmitter and implements the following new
       ones.

   app
         my $app = $job->app;

       Get application from "app" in Minion.

         # Longer version
         my $app = $job->minion->app;

   fail
         my $bool = $job->fail;
         my $bool = $job->fail('Something went wrong!');
         my $bool = $job->fail({whatever => 'Something went wrong!'});

       Transition from "active" to "failed" state, and if there are attempts remaining,
       transition back to "inactive" with a delay based on "backoff" in Minion.

   finish
         my $bool = $job->finish;
         my $bool = $job->finish('All went well!');
         my $bool = $job->finish({whatever => 'All went well!'});

       Transition from "active" to "finished" state.

   info
         my $info = $job->info;

       Get job information.

         # Check job state
         my $state = $job->info->{state};

         # Get job metadata
         my $progress = $job->info->{notes}{progress};

         # Get job result
         my $result = $job->info->{result};

       These fields are currently available:

       args
           args => ['foo', 'bar']

         Job arguments.

       attempts
           attempts => 25

         Number of times performing this job will be attempted.

       children
           children => ['10026', '10027', '10028']

         Jobs depending on this job.

       created
           created => 784111777

         Epoch time job was created.

       delayed
           delayed => 784111777

         Epoch time job was delayed to.

       finished
           finished => 784111777

         Epoch time job was finished.

       notes
           notes => {foo => 'bar', baz => [1, 2, 3]}

         Hash reference with arbitrary metadata for this job.

       parents
           parents => ['10023', '10024', '10025']

         Jobs this job depends on.

       priority
           priority => 3

         Job priority.

       queue
           queue => 'important'

         Queue name.

       result
           result => 'All went well!'

         Job result.

       retried
           retried => 784111777

         Epoch time job has been retried.

       retries
           retries => 3

         Number of times job has been retried.

       started
           started => 784111777

         Epoch time job was started.

       state
           state => 'inactive'

         Current job state, usually "active", "failed", "finished" or "inactive".

       task
           task => 'foo'

         Task name.

       worker
           worker => '154'

         Id of worker that is processing the job.

   is_finished
         my $bool = $job->is_finished;

       Check if job performed with "start" is finished.

   note
         my $bool = $job->note(foo => 'bar');

       Change a metadata field for this job. The new value will get serialized by "backend" in
       Minion (often with Mojo::JSON), so you shouldn't send objects and be careful with binary
       data, nested data structures with hash and array references are fine though.

         # Share progress information
         $job->note(progress => 95);

         # Share stats
         $job->note(stats => {utime => '0.012628', stime => '0.002429'});

   perform
         $job->perform;

       Perform job in new process and wait for it to finish.

   pid
         my $pid = $job->pid;

       Process id of the process spawned by "start" if available.

   remove
         my $bool = $job->remove;

       Remove "failed", "finished" or "inactive" job from queue.

   retry
         my $bool = $job->retry;
         my $bool = $job->retry({delay => 10});

       Transition job back to "inactive" state, already "inactive" jobs may also be retried to
       change options.

       These options are currently available:

       attempts
           attempts => 25

         Number of times performing this job will be attempted.

       delay
           delay => 10

         Delay job for this many seconds (from now), defaults to 0.

       priority
           priority => 5

         Job priority.

       queue
           queue => 'important'

         Queue to put job in.

   start
         $job = $job->start;

       Perform job in new process, but do not wait for it to finish.

         # Perform two jobs concurrently
         $job1->start;
         $job2->start;
         my ($first, $second);
         sleep 1
           until $first ||= $job1->is_finished and $second ||= $job2->is_finished;

   stop
         $job->stop;

       Stop job performed with "start" immediately.

SEE ALSO

       Minion, Mojolicious::Guides, <http://mojolicious.org>.