Как запланировать запуск задания на определенную дату в Hangfire

Hangfire.io поддерживает создание расписания повторяющихся заданий в стиле CRON. Но как мне указать, что конкретное задание должно выполняться один раз в определенную дату / время, например что задание должно быть запущено 4 июня 2016 г., в 16:22 - и только в этот конкретный момент времени?

Аналогичный способ задать тот же вопрос может быть следующим: насколько велико подмножество выражения CRON, описанное здесь, поддерживается Hangfire? (Описанное выражение CRON поддерживает поле «Год», которое можно использовать).

Кроме того, как вы думаете, Hangfire - лучший выбор для планирования разовых пакетных заданий, в первую очередь, при условии, что я использую Hangfire для обработки заданий?


person someName    schedule 29.02.2016    source источник
comment
Я знаю, что это старый вопрос. Но поскольку выражения cron обрабатывают не только годы (минуты, часы, день, месяц, день недели), следующее выражение cron: 22 16 4 6 * означает: «В 16:22 в день месяца 4 в июне». - Посетите следующий сайт: crontab.guru/#22_16_4_6_ *   -  person Flavio Francisco    schedule 03.06.2019


Ответы (3)


Вы можете использовать метод BackgroundJob.Schedule (Expression> methodCall, DateTimeOffsetdt).

BackgroundJob.Schedule(methodCall, enqueueAt);
person Singha    schedule 03.07.2017

В одном из моих приложений мы планируем выполнение задания только один раз в определенное время. Посмотрите на код ниже

  public string Schedule(Expression<Action> methodToCall, DateTimeOffset enqueueAt)
    {
        return BackgroundJob.Schedule(methodToCall, enqueueAt);
    }

Где enqueueAt - это дата и время, когда вы хотите запустить задание.

person Singha    schedule 21.07.2017

Выражение Cron с Year не поддерживается Hangfire.

Чтобы запустить задание в определенный момент времени, используйте следующую schedule перегрузку метода из класса BackgroundJob.

public static string Schedule([InstantHandle] Expression<Action> methodCall, DateTimeOffset enqueueAt);

BackgroundJob.Schedule(() => Console.Write("test"), new DateTime(2016, 6, 4, 16, 22, 0));
person JogiKalpesh    schedule 03.03.2016
comment
Когда вы пытаетесь указать часть года в выражении cron, вызывая RecurringJob.AddOrUpdate("test", () => Console.Write("test"),"44 16 2 FEB * 2016");, это исключение выдается {"'44 16 2 FEB * 2016' is not a valid crontab expression. It must contain at least 5 components of a schedule (in the sequence of minutes, hours, days, months, days of week)."} - person JogiKalpesh; 03.03.2016
comment
Это недопустимый формат CRON, который поддерживает Hangfire. См. Это: en.wikipedia.org/wiki/Cron#CRON_expression - person Erick Smith; 14.04.2016