Cron Triggers
Trigger jobs based on a Cron schedule.
Creating a Cron Task
Cron Tasks are recurrent tasks that are triggered on a Cron schedule.
To create a Cron task, subclass CronTask
class and overwrite it’s execute
method exactly
as you would any other regular task.
Registering a Cron Trigger
Once a Cron task is implemented, it can be registered to be triggered on a Cron schedule. This means, every minute for which the Cron expression matches, a new job gets be submitted, consisting of a single task instance derived from the Cron registered task prototype.
The syntax for specifying the cron triggers is a CRON expression. A helpful tool to test your cron expressions is crontab.guru.
Start a Task Runner capable of executing Cron Tasks
With the Cron task registered, a job gets submitted whenever the Cron expression matches. But for the tasks to actually run, a task runner needs to be available capable of executing the Cron task. If no task runner is available, the submitted jobs remain in a task queue. Once a eligible task runner becomes available, all jobs in the queue are picked up and executed.
Leaving this task runner running, after a while it’s output looks like this:
Inspecting the registered Cron Task
The Tilebox Console offers a convenient way to inspect all the recurrent tasks that are registered to run on a schedule.
Once you’ve registered a cron task, you can inspect it in the console. Here is an example of what it looks like:
You can use the console to view, edit, and delete the cron tasks that are registered.
Deleting Cron Triggers
To delete a registered cron task, use recurrent_tasks.delete
. After deletion, no new jobs get submitted by
a cron trigger. But jobs submitted in the past, which are still in the queue, remain in the queue and can still be
picked up by a task runner.
Submitting Cron jobs manually
To test cron tasks, they can be submitted as regular tasks. This is useful for testing purposes, or if you
want to submit a cron task as part of a larger workflow. To do so, it needs to be instantiated with a specific trigger
time using the once
method.
Submitting a job with a cron task once immediately schedules the task, and a runner could pick
it up and execute it immediately. The given time specified in the once
method does not influence the time at which
the task gets executed, only the self.trigger.time
attribute of the cron task corresponds to the specified time.
Was this page helpful?