From 1a98204c76e3ffc243496fbf72455a434a9bcc3c Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 13 Jan 2022 10:37:54 +1100 Subject: [PATCH] Adds documentation for scheduled task mixin --- docs/extend/plugins/schedule.md | 44 +++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/docs/extend/plugins/schedule.md b/docs/extend/plugins/schedule.md index 5a713b7..6752980 100644 --- a/docs/extend/plugins/schedule.md +++ b/docs/extend/plugins/schedule.md @@ -5,3 +5,47 @@ title: Schedule Mixin ## ScheduleMixin The ScheduleMixin class provides a plugin with the ability to call functions at regular intervals. + +- Functions are registered with the InvenTree worker which runs as a background process. +- Scheduled functions do not accept any arguments +- Plugin member functions can be called +- Global functions can be specified using dotted notation + +### Example + +An example of a plugin which supports scheduled tasks: + +```python +class ScheduledTaskPlugin(ScheduleMixin, SettingsMixin, IntegrationPluginBase): + """ + Sample plugin which runs a scheduled task, and provides user configuration. + """ + + PLUGIN_NAME = "Scheduled Tasks" + PLUGIN_SLUG = 'schedule' + + SCHEDULED_TASKS = { + 'global': { + 'func': 'some_module.function', + 'schedule': 'H', # Run every hour + }, + 'member': { + 'func': 'foo', + 'schedule': 'I', # Minutes + 'minutes': 15, + }, + } + + SETTINGS = { + 'SECRET': { + 'name': 'A secret', + 'description': 'User configurable value', + }, + } + + def foo(self): + """ + This function runs every 15 minutes + """ + secret_value = self.get_setting('SECRET') + print(f"foo - SECRET = {secret_value})