You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改或关闭Hangfire默认15秒一次的数据库轮询间隔?

Hangfire 调整/关闭SQL Server存储默认轮询间隔方案

Hangfire默认15秒的数据库拉取行为由SQL Server存储的SchedulePollingInterval参数控制,该参数用于拉取待触发的定时任务,无法完全关闭,否则会导致定时任务无法正常触发,但你可以根据自身业务场景把间隔调得足够大,降低数据库访问频率。你当前的配置存在多处重复初始化存储的冗余问题,修改后的配置如下:

调整轮询间隔配置示例

你每日仅执行一次任务,可以把间隔调整为1小时甚至更长,只要小于任务执行周期即可,不会出现任务触发延迟:

services.AddHangfire(config =>
config.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer()
.UseDefaultTypeSerializer()
// 配置存储时传入参数修改轮询间隔
.UseSqlServerStorage(configuration.GetConnectionString("BackOffice"), new SqlServerStorageOptions
{
    // 单位为TimeSpan,此处设置为1小时,可按需调整
    SchedulePollingInterval = TimeSpan.FromHours(1)
})
);

// 删除原重复的存储初始化逻辑
// var sqlStorage = new SqlServerStorage(configuration.GetConnectionString("BackOffice"));
// JobStorage.Current = sqlStorage;

// 无需重复传入存储,复用上方配置即可
services.AddHangfireServer();
// 删除重复的全局配置,AddHangfire中已完成配置
// GlobalConfiguration.Configuration.UseSqlServerStorage(configuration.GetConnectionString("BackOffice"));
services.AddHttpClient();

注意事项

  • SchedulePollingInterval的取值必须小于你最小的任务执行间隔,比如你有每日执行的任务,间隔最大可设置为12小时,不会错过触发
  • 原配置重复初始化了3次SQL Server存储,精简后可避免配置冲突问题
  • 该配置适配Hangfire 1.7及以上版本,无需额外添加其他依赖

内容的提问来源于stack exchange,提问作者saleh ibrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:15:07