Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add proper support for time intervals in recurring jobs #1054

Open
odinserj opened this issue Nov 10, 2017 · 3 comments
Open

Add proper support for time intervals in recurring jobs #1054

odinserj opened this issue Nov 10, 2017 · 3 comments

Comments

@odinserj
Copy link
Member

Since Cron.XXXInterval methods should be deprecated as per #1041, a question arises – how to handle intervals then? One could use ScheduledState to create a job and re-schedule after each completion. But this is not an obvious option, and could lead to much more non-obvious consequences like 5 retries or an original job caused 5 scheduled jobs to be created instead of 1 with a simple implementation.

Instead, recurring jobs should be modified to support the following recurring schemes (yes, there will be no support for seconds yet). This is just to handle simple cases, with a simple implementation. Since recurring job is a has, we could save backward compatibility without any problems.

  1. Every X minutes
  2. Every X hours at MM minutes
  3. Every X days at HH:MM
  4. Every X months at DD day at HH:MM
@crawdell
Copy link

crawdell commented Apr 5, 2018

I'd like to propose something I've done before to handle cron intervals. I needed a solution to "every 2 weeks" when using Ncrontab Advanced and so I extended the functionality to allow for "Xnn" to be added to a cron expression.

Example:
00 00 * * FRI X2

Without "X2" this would just be every Friday at midnight. But with X2 I would getnextoccurance 2 times and use the second value as the next run time which would be 2 weeks.
This can be useful for doing all kinds of new variations. It can also lead to confusing results sometimes if you don't think about your expression carefully but that's true of all cron expressions.

This I think helps fill in a gap that cron has and has been very useful for my scheduled jobs. Now that I'm using Hangfire I'll love to see this included. The good thing is you can use this with any cron expression and just use a multiple X3 to get it to do what you want.

30 * * * * X3 would be every 3 hours at 30 minutes past the hour.

I'm on the 1.7.0 beta and it works great. If this could somehow be added that would be very helpful. If not I might try my own version with the source either by extending Hangfire or more likely Cronos.

[I posted this in another response as well. Sorry if this confuses, I didn't see this issue then]

@antgel
Copy link

antgel commented Feb 7, 2019

Does anybody plan to work on this extremely useful feature? Something like "every x weeks from date y" would be great.

staviloglu added a commit to staviloglu/Hangfire that referenced this issue Nov 24, 2022
Updated MinuteInterval & HourInterval methods to make them available (not obselete) again.

Added defensive code against interval value to get rid of the problem described in HangfireIO#1041 

Also related:
HangfireIO#1054
HangfireIO#1779
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

4 participants
@antgel @odinserj @crawdell and others