首页 > 解决方案 > 挂火作业的最短时间是多少

问题描述

Asp.Net Core 3.1hangfire. 我配置hangfire为每秒运行一次,但它每 15 秒或更长时间运行一次。这是我的ConfigureService

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddScoped<IShowDate, ShowDate>();
    services.AddHangfire(x =>
    {
        x.UseMemoryStorage();
    });
    services.AddHangfireServer();
}

Configure方法

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();

    RecurringJob.AddOrUpdate<IShowDate>(job => job.Print(), "*/1 * * * * *");

    app.UseRouting();

    app.UseAuthorization();
    app.UseHangfireDashboard();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapHangfireDashboard();
    });
}

ShowDate班级

public interface IShowDate
{
    Task Print();
}
public class ShowDate : IShowDate
{
    public async Task Print()
    {
        Console.WriteLine($"Example {DateTime.Now}");
        await Task.CompletedTask;
    }
}

结果

Example 9/8/2020 10:46:14 AM
Example 9/8/2020 10:46:29 AM
Example 9/8/2020 10:46:44 AM
Example 9/8/2020 10:46:59 AM
Example 9/8/2020 10:47:14 AM
Example 9/8/2020 10:47:29 AM
Example 9/8/2020 10:47:44 AM
Example 9/8/2020 10:47:59 AM
Example 9/8/2020 10:48:14 AM
Example 9/8/2020 10:48:29 AM
Example 9/8/2020 10:48:44 AM
Example 9/8/2020 10:48:59 AM
Example 9/8/2020 10:49:14 AM
Example 9/8/2020 10:49:29 AM
Example 9/8/2020 10:49:44 AM
Example 9/8/2020 10:49:59 AM

我怎样才能每秒运行一次工作?

标签: c#asp.net-corehangfire

解决方案


将默认值更改SchedulePollingInterval为 1 秒

services.AddHangfireServer(option =>
{
    option.SchedulePollingInterval = TimeSpan.FromSeconds(1);
});

推荐阅读