Search code examples
c#asp.net-mvchangfire

Hangfire single instance recurring job


I am trying to use Hangfire to run a recurring job in the background that polls data from another website, the issue is that I don't want the recurring job to run if the previous job is still running.

I've read through the documentation but can't seem to find the answer. Is there a way to have a recurring job that runs every 10 minutes but skips if the previous task is not done yet?

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);
}

Solution

  • You can use; [DisableConcurrentExecution(10 * 60)] attribute on the job method.

    Here you can find information about this attribute: http://odinserj.net/2014/05/21/hangfire-0.8.2-released/