Question:
What features are available to delay and/or repeat processing of jobs (sleep/wake)?
Answer:
The following methods of delay have been implemented:
A simple way to make a job sleep and wake up is to configure a repeat interval in hours, minutes and seconds. In this case the job is not exactly "delayed" but will be restarted as soon as the interval has elapsed.
A job can delay its processing by the JobScheduler API method
delay_spooler_process(seconds_or_hhmmss)
. This is available only if the job implements the API'smethod spooler_process()
. In this case the job remains loaded, i.e. it is in processing but uses no CPU until the scheduled interval has elapsed.A job can be configured for restart should an error have occurred, for example by configuration or API methods:
spooler_job.delay_after_error( 2 ) = 10; // 10 seconds spooler_job.delay_after_error( 5 ) = "00:01"; // one minute spooler_job.delay_after_error( 10 ) = "24:00"; // one day spooler_job.delay_after_error( 20 ) = "STOP";
In this example, JobScheduler repeats a job immediately after a (first) error occurs. After two to four consecutive errors, however, JobScheduler delays restarting the job by 10 seconds; between five and nine consecutive errors, the delay is one minute; between ten and nineteen errors, it is 24 hours. The job is stopped after the twentieth consecutive error.
It is possible to set the value of the
seconds_or_hhmm_ss
parameter to "STOP" in order to restrict the number of (unsuccessful) repetitions of a job. The job then is stopped, i.e. will not restart automatically, when the number of consecutive errors specified is reached.