Software /
code /
prosody
Changeset
13421:92301fa7a673
mod_cron: Allow configuring various "internal" delay parameters
Notably, it is now possible to add a randomized spread factor to the check
interval.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 20 Feb 2024 17:31:17 +0000 |
parents | 13420:7dc7e2e15b2a |
children | 13422:3c80124452ed |
files | plugins/mod_cron.lua |
diffstat | 1 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_cron.lua Sat Feb 17 19:07:57 2024 +0100 +++ b/plugins/mod_cron.lua Tue Feb 20 17:31:17 2024 +0000 @@ -2,6 +2,10 @@ local async = require("prosody.util.async"); +local cron_initial_delay = module:get_option_number("cron_initial_delay", 1); +local cron_check_delay = module:get_option_number("cron_check_delay", 3600); +local cron_spread_factor = module:get_option_number("cron_spread_factor", 0); + local active_hosts = {} function module.add_host(host_module) @@ -46,10 +50,14 @@ task:save(started_at); end +local function spread(t, factor) + return t * (1 - factor + 2*factor*math.random()); +end + local task_runner = async.runner(run_task); -scheduled = module:add_timer(1, function() +scheduled = module:add_timer(cron_initial_delay, function() module:log("info", "Running periodic tasks"); - local delay = 3600; + local delay = spread(cron_check_delay, cron_spread_factor); for host in pairs(active_hosts) do module:log("debug", "Running periodic tasks for host %s", host); for _, task in ipairs(module:context(host):get_host_items("task")) do task_runner:run(task); end