在Hangfire中每8天执行一次循环作业

16

在Hangfire中创建一个定期作业,例如8天后执行,是否可能?

我找到的最接近的是每周执行一次作业 -

RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), Cron.Weekly());

了解到Hangfire也接受标准的CronExpression,我尝试探索这个频率的cron表达式,但未能找到相关内容- https://en.wikipedia.org/wiki/Cron

一个不太优雅的解决方案可能是创建3或4个作业,根据相应的日期每月执行一次,但我不想这样做。

请问是否有任何建议。

2个回答

32

最后,我像这样使用了 CronExpression 来安排一个每8天或任何天数的定期工作。

string cronExp = "* * */8 * *";
RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), cronExp);

CronExpression 中的第三个部分代表月份的日期。

相应的部分如下所示 - (参考:https://en.wikipedia.org/wiki/Cron

输入图像描述


1
我处于类似的情况。我正在尝试每天23:58执行一个方法。该方法似乎在运行,但是它在23:58运行多次。以下是代码。我不知道发生了什么。感谢您的见解。RecurringJob.AddOrUpdate(() => new DailyStatistics().Send(), Cron.Daily(3,58)); - Rohit
3
实际上,这应该是 0 * */8 * * 而不是 * * */8 * *。在你的情况下,它会在每个第8天的每一分钟运行。 - Georgi Gevorgyan
这完全是错的!它不会在每8天间隔上运行,它将在每个月的第8天的每一分钟运行,哈哈。 - 0014

15
一个更加清晰的解决方案是使用 Cron.DayInterval(interval)
对于您的情况,它将是:
RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), Cron.DayInterval(8));

2
好的!我猜这可能是在hangfire的新版本中添加的。+1 - Yogi
现在已经过时,将在2.0.0版本中被移除。 - Daniel Pl.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接