Comparison

plugins/mod_cron.lua @ 12186:7f25ac9d8f0d

mod_cron: Allow for a small amount of timer drift If the timer activates a bit early then a task might be just a few seconds short of being allowed to run. This would run such a task rather than wait another hour. The value 0.5% chosen so that a weekly task does not run an entire hour earlier than last time.
author Kim Alvefur <zash@zash.se>
date Sat, 15 Jan 2022 09:09:24 +0100
parent 12009:f6fff0658108
child 12489:8b42575738f0
comparison
equal deleted inserted replaced
12185:708769a4c5da 12186:7f25ac9d8f0d
38 host_module:handle_items("task", task_added, task_removed, true); 38 host_module:handle_items("task", task_added, task_removed, true);
39 39
40 function host_module.unload() active_hosts[host_module.host] = nil; end 40 function host_module.unload() active_hosts[host_module.host] = nil; end
41 end 41 end
42 42
43 local function should_run(when, last) return not last or last + periods[when] <= os.time() end 43 local function should_run(when, last) return not last or last + periods[when] * 0.995 <= os.time() end
44 44
45 local function run_task(task) 45 local function run_task(task)
46 local started_at = os.time(); 46 local started_at = os.time();
47 task:run(started_at); 47 task:run(started_at);
48 task:save(started_at); 48 task:save(started_at);