每8天在Hangfire中执行一次定期工作

Yog*_*ogi 11 c# cron hangfire

是否有可能在Hangfire中创建一个在给定天数后执行的定期作业,比如说8天.

我发现最接近的是一周内执行一次工作 -

RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), Cron.Weekly());
Run Code Online (Sandbox Code Playgroud)

了解Hangfire也接受标准CronExpression,我试过探索这个频率的cron表达式但是找不到它 - https://en.wikipedia.org/wiki/Cron

一个丑陋的解决方案可能是创建3或4个作业,在相应的某些日期每个月执行一次,但我不想这样做.

请给我任何建议.

Yog*_*ogi 22

最后,我使用CronExpression这样的方式安排一个频繁的工作,每8天或任何天数.

string cronExp = "* * */8 * *";
RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), cronExp);
Run Code Online (Sandbox Code Playgroud)

第三部分CronExpression代表一个月的日期.

各段如下 - (参考:https://en.wikipedia.org/wiki/Cron)

在此输入图像描述

  • 实际上这必须是 `0 * */8 * *` 而不是 `* * */8 * *` 在你的情况下它将在每个第 8 天的每一分钟运行。 (2认同)

小智 8

更清洁的解决方案是使用Cron.DayInterval(interval).

对于你的情况,它将是

RecurringJob.AddOrUpdate("MyJob",() => ScheduledJob(), Cron.DayInterval(8));
Run Code Online (Sandbox Code Playgroud)

  • 太好了!我想它是在较新版本的hangfire中添加的.+1 (2认同)