Hangfire — как он справляется с последними днями месяца?

У меня есть пользовательский интерфейс, в котором пользователи выбирают, в какой день каждого месяца они хотят получать электронное письмо. Что произойдет, если они выберут 31-е? Как Hangfire обрабатывает дни, в которых всего 30 дней или февраль?

Благодарю вас!


person AlesSvetina    schedule 15.01.2016    source источник


Ответы (2)


На случай, если кто-то вернется к этому — это ограничение было снято в Hangfire 1.7, когда они перешли на Chronos для поддержки повторяющихся выражений CRON.

person Gumzle    schedule 27.04.2020
comment
Выражение Cron выглядит так: 0 0 L * * - person user8606929; 02.11.2020

Согласно этому проблема, Hangfire не может запланировать любое задание на последний день месяца.

Hangfire использует NCrontab, это не поддержка # или L

Ваш лучший выбор (на данный момент):

  • Запланируйте несколько заданий вручную (используя календарь для определения последнего дня месяца или другие методы для определения дней в месяце)
  • Не использовать Hangfire (используйте что-то, что более способно с точки зрения планирования типа cron)

FluentScheduler поддерживает LastDayOfTheMonth

Schedule(() => Console.WriteLine("This task will run at last day of every month."))
        .ToRunEvery(1)
        .Months()
        .OnTheLastDay();
person Mrchief    schedule 01.02.2016