【问题标题】:Execute a recurring job in Hangfire every 8 days每 8 天在 Hangfire 中执行一次重复性工作
【发布时间】:2016-02-03 04:51:02
【问题描述】:

是否可以在 Hangfire 中创建一个在给定天数(例如 8 天)后执行的重复作业。

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

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

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

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

请有任何建议。

【问题讨论】:

    标签: c# cron hangfire


    【解决方案1】:

    最后,我使用 CronExpression 这样的方式安排了一个重复性工作,频率为每 8 天或任意天数。

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

    CronExpression 中的第三个部分代表月份中的某天。

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

    【讨论】:

    • 我也有类似的情况。我试图在每天 23:58 执行一个方法。该方法似乎正在运行,但它在 23:58 运行了多次。按照代码。我不知道这是怎么回事。感谢您的见解。 RecurringJob.AddOrUpdate(() => new DailyStatistics().Send(), Cron.Daily(3,58));
    • 实际上这必须是 0 * */8 * * 而不是 * * */8 * * 在您的情况下,它将在每 8 天的每一分钟运行。
    【解决方案2】:

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

    你的情况是

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

    【讨论】:

    • 不错!我猜它是在较新版本的hangfire中添加的。 +1
    • 现已过时,将在版本 2.0.0 中删除
    猜你喜欢
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2013-01-28
    相关资源
    最近更新 更多