如何增加 hangfire 作业超时

How to increase hangfire job timeout

我有一个 .net 核心应用程序,它有 hangfire 1.7.2 运行。

所以我有这个工作,它执行 SQL 存储过程和一个很长的 运行 任务,可能需要 30 分钟。

这给了我以下错误: 超时已过。在操作完成之前超时期限已过,或者服务器没有响应。声明已终止。

services.AddHangfire(configuration => 

configuration.UseSqlServerStorage(Configuration.GetConnectionString("HangfireConnection"), 
new SqlServerStorageOptions
    {
        SlidingInvisibilityTimeout = TimeSpan.FromMinutes(30),
        QueuePollInterval = TimeSpan.Zero,
        UsePageLocksOnDequeue = false,
        DisableGlobalLocks = false
    }));

请帮帮我。

SqlServerStorageOptions 上的 CommandTimeout 属性 应该就是您要找的。

将此时间增加到 30 分钟以上,您的作业将停止超时。

(参见来源 https://github.com/HangfireIO/Hangfire/blob/cf7bb08d24ee4953926b7717461bf8a23d895eb4/src/Hangfire.SqlServer/SqlServerConnection.cs

我设法通过增加 SQLCommand 超时来解决这个问题,默认情况下是 30 秒。

 using (SqlCommand cmd = new SqlCommand(query, con))
 {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandTimeout = 3600; // 1 hour
        await cmd.ExecuteNonQueryAsync();
 }