我有一些作业看起来像是挂起的,可能会运行几个小时,但实际上什么也没做。如果Hangfire运行的时间超过一定的时间,有没有办法杀死一个作业?
我在SQL服务器上运行最新版本的Hangfire。
发布于 2018-04-03 13:42:56
在创建作业(无论是循环作业还是单个后台作业)调用时,将"IJobCancellationToken“类型的额外参数传递给作业方法,
public static void Method1(string param1, IJobCancellationToken token) { }创建作业时,使用空的IJobCancellationToken令牌值创建作业并保存jobId。有另一个循环作业,它会轮询这些作业,并在超出所需的时间限制时简单地调用BackgroundJob.Delete(jobId)。这将从hangfire中清除作业,并终止服务器上的进程。
发布于 2019-11-12 11:42:56
是的,你可以这样做,你需要在启动时设置FetchNextJobTimeout。通过设置FetchNextJobTimeout,您可以控制在Hangfire开始在另一个线程上再次执行作业之前,作业可以运行多长时间。
services.AddHangfire(config => {
config.UseMemoryStorage(new MemoryStorageOptions { FetchNextJobTimeout = TimeSpan.FromHours(24) });
});https://stackoverflow.com/questions/44812366
复制相似问题