Ответ 1
Вы можете использовать;
[DisableConcurrentExecution(10 * 60)]
в методе задания.
Здесь вы можете найти информацию об этом атрибуте: http://odinserj.net/2014/05/21/hangfire-0.8.2-released/
Я пытаюсь использовать 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);
}
Вы можете использовать;
[DisableConcurrentExecution(10 * 60)]
в методе задания.
Здесь вы можете найти информацию об этом атрибуте: http://odinserj.net/2014/05/21/hangfire-0.8.2-released/
Вот предложение: просто закажите задание как один экземпляр. Затем, если задание завершено успешно, вы выполняете последний шаг в задании. Заключительный шаг вашей работы будет приостановлен в следующем задании за 10 минут.
Не обеспечит ли вам необходимую функциональность?