Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TheSchwartz::Worker(3)User Contributed Perl DocumentatioTheSchwartz::Worker(3)

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.

perl v5.32.1			  2022-03-27		TheSchwartz::Worker(3)

NAME | SYNOPSIS | DESCRIPTION | SUBCLASSING | USAGE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=TheSchwartz::Worker&sektion=3&manpath=FreeBSD+13.1-RELEASE+and+Ports>

home | help