cron, separate gem or pull request?
dorianmariecom opened this issue · comments
I'm thinking of porting https://github.com/codez/delayed_cron_job to delayed, should I make a separate gem or is there any change a PR would be merged?
actually I can do this by setting the next time the job will be executed from within the job, nevermind
👋 Hi @dorianmariefr -- catching up on notifications after the new year (happy 2022!) and saw this.
While delayed
doesn't yet have a built-in answer for scheduled jobs, I wanted to point you to Betterment's fork of the clockwork gem: https://github.com/Betterment/clockwork
The changes in our fork are not fully reflected in the README, so I'll give you a quick overview:
-
The execution of every "tick" (once per minute) is guaranteed to occur - a new DB table is necessary and a migration generator is provided. This means that if the clock instance goes down, the next instance will be able to catch up and run all tasks that were missed.
-
We've made a couple fixes to resolve issues around daylight savings time. (Spring forward would cause 24-hour periodicity to break, skipping tasks for a day, while spring back might cause tasks to double execute.)
-
As part of the DST fixes, the ability to run things
every(n.minutes)
for an arbitrary "n" (or without an:at
option), has been removed, since these held the last-run state in memory and would reset on every deploy. Instead, tasks must be run at specific times daily or at an exact1.minute
interval:every(1.minute)
, will run every tickevery(1.day, at: specified_times)
will run at specified times of dayevery(1.day, at: %w(4:00 10:00 16:00 22:00))
will run every 6 hours
hi @smudge, thanks, happy new year too, I ended up migrating to sidekiq and sidekiq-cron