Подтвердить что ты не робот

Повторная работа одиночного экземпляра Hangfire

Я пытаюсь использовать Hangfire для запуска повторяющейся работы в фоновом режиме, которая опросает данные с другого веб-сайта, проблема в том, что я не хочу, чтобы повторяющееся задание выполнялось, если предыдущее задание все еще выполняется.

Я прочитал документацию, но не могу найти ответ. Есть ли способ иметь повторяющуюся работу, которая выполняется каждые 10 минут, но пропускает, если предыдущая задача еще не выполнена?

public void Configuration(IAppBuilder app)
{
    app.MapSignalR();

    // Hangfire
    GlobalConfiguration.Configuration
        .UseSqlServerStorage("DatabaseContext");

    app.UseHangfireDashboard();
    app.UseHangfireServer();

    RecurringJob.AddOrUpdate("site-parser", () => SiteParserService.RunAll(), Cron.Minutely, TimeZoneInfo.Utc);

    ConfigureAuth(app);
}
4b9b3361

Ответ 1

Вы можете использовать; [DisableConcurrentExecution(10 * 60)] в методе задания.

Здесь вы можете найти информацию об этом атрибуте: http://odinserj.net/2014/05/21/hangfire-0.8.2-released/

Ответ 2

Вот предложение: просто закажите задание как один экземпляр. Затем, если задание завершено успешно, вы выполняете последний шаг в задании. Заключительный шаг вашей работы будет приостановлен в следующем задании за 10 минут.

Не обеспечит ли вам необходимую функциональность?