每 8 天在 Hangfire 中执行一个循环作业
Execute a recurring job in Hangfire every 8 days
是否可以在 Hangfire 中创建一个在给定天数(比如 8)后执行的循环作业。
我找到的最接近的是每周执行一次作业 -
RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), Cron.Weekly());
了解到 Hangfire 也接受标准 CronExpression
,我尝试探索此频率的 cron 表达式,但找不到适合它的 -
https://en.wikipedia.org/wiki/Cron
一个丑陋的解决方案可能是创建 3 或 4 个作业,相应地每月在某些日期执行一次,但我不想那样做。
请提出任何建议。
最后,我像这样使用 CronExpression
来安排一个周期性工作,频率为每 8 天或任意天数。
string cronExp = "* * */8 * *";
RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), cronExp);
CronExpression
中的第三段代表月份中的第几天。
各段如下-(参考:https://en.wikipedia.org/wiki/Cron)
更简洁的解决方案是使用 Cron.DayInterval(interval).
对于你的情况,它将是
RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), Cron.DayInterval(8));
是否可以在 Hangfire 中创建一个在给定天数(比如 8)后执行的循环作业。
我找到的最接近的是每周执行一次作业 -
RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), Cron.Weekly());
了解到 Hangfire 也接受标准 CronExpression
,我尝试探索此频率的 cron 表达式,但找不到适合它的 -
https://en.wikipedia.org/wiki/Cron
一个丑陋的解决方案可能是创建 3 或 4 个作业,相应地每月在某些日期执行一次,但我不想那样做。
请提出任何建议。
最后,我像这样使用 CronExpression
来安排一个周期性工作,频率为每 8 天或任意天数。
string cronExp = "* * */8 * *";
RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), cronExp);
CronExpression
中的第三段代表月份中的第几天。
各段如下-(参考:https://en.wikipedia.org/wiki/Cron)
更简洁的解决方案是使用 Cron.DayInterval(interval).
对于你的情况,它将是
RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), Cron.DayInterval(8));