如何增加 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 分钟以上,您的作业将停止超时。
我设法通过增加 SQLCommand 超时来解决这个问题,默认情况下是 30 秒。
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 3600; // 1 hour
await cmd.ExecuteNonQueryAsync();
}
我有一个 .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 分钟以上,您的作业将停止超时。
我设法通过增加 SQLCommand 超时来解决这个问题,默认情况下是 30 秒。
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 3600; // 1 hour
await cmd.ExecuteNonQueryAsync();
}