bionic (3) TheSchwartz::Worker.3pm.gz

Provided by: libtheschwartz-perl_1.12-1_all bug

NAME

       TheSchwartz::Worker - superclass for defining task behavior

SYNOPSIS

           package MyWorker;
           use base qw( TheSchwartz::Worker );

           sub work {
               my $class = shift;
               my TheSchwartz::Job $job = shift;

               print "Workin' hard or hardly workin'? Hyuk!!\n";

               $job->completed();
           }

           package main;

           my $client = TheSchwartz->new( databases => $DATABASE_INFO );
           $client->can_do('MyWorker');
           $client->work();

DESCRIPTION

       TheSchwartz::Worker objects are the salt of the reliable job queuing earth.  The behavior required to
       perform posted jobs are defined in sub-classes of TheSchwartz::Worker. These sub-classes are named for
       the ability required of a "TheSchwartz" client to do the job, so that the clients can dispatch
       automatically to the appropriate worker routine.

       Because jobs can be performed by any machine running code for capable worker classes,
       "TheSchwartz::Worker"s are generally stateless. All mutable state is stored in the "TheSchwartz::Job"
       objects. This means all "TheSchwartz::Worker" methods are class methods, and "TheSchwartz::Worker"
       classes are generally never instantiated.

SUBCLASSING

       Define and customize how a job is performed by overriding these methods in your subclass:

   "$class->work( $job )"
       Performs the job that required ability $class. Override this method to define how to do the job you're
       defining.

       Note that will need to call "$job->completed()" or "$job->failed()" as appropriate to indicate success or
       failure. See TheSchwartz::Job.

   "$class->max_retries( $job )"
       Returns the number of times workers should attempt the given job. After this many tries, the job is
       marked as completed with errors (that is, a "TheSchwartz::ExitStatus" is recorded for it) and removed
       from the queue. By default, returns 0.

   "$class->retry_delay( $num_failures )"
       Returns the number of seconds after a failure workers should wait until reattempting a job that has
       already failed $num_failures times. By default, returns 0.

   "$class->keep_exit_status_for()"
       Returns the number of seconds to allow a "TheSchwartz::ExitStatus" record for a job performed by this
       worker class to exist. By default, returns 0.

   "$class->grab_for()"
       Returns the number of seconds workers of this class will claim a grabbed a job.  That is, returns the
       length of the timeout after which other workers will decide a worker that claimed a job has crashed or
       faulted without marking the job failed. Jobs that are marked as failed by a worker are also marked for
       immediate retry after a delay indicated by "retry_delay()".

USAGE

   "$class->grab_job( $client )"
       Finds and claims a job for workers with ability $class, using "TheSchwartz" client $client. This job can
       then be passed to "work()" or "work_safely()" to perform it.

   "$class->work_safely( $job )"
       Performs the job associated with the worker's class name. If an error is thrown while doing the job, the
       job is appropriately marked as failed, unlike when calling "work()" directly.