Hangfire工作提示

时间:2017-06-28 20:53:44

标签: hangfire

我有一些工作似乎在篝火中“挂起”,可能会持续数小时,但实际上并没有做任何事情。如果一个工作的运行时间超过一定时间,Hangfire是否有办法杀死一个工作?

我在SQL服务器上运行最新版本的Hangfire。

2 个答案:

答案 0 :(得分:0)

在你创造的工作中(无论是经常性的还是单一的后台工作)调用,将一个类型为“IJobCancellationToken”的额外参数传递给你的工作方法,

public static void Method1(string param1, IJobCancellationToken token) { }

创建作业时,使用null IJobCancellationToken标记值创建作业并保存jobId。还有另一项定期工作可以轮询这些工作,只需在BackgroundJob.Delete(jobId)超过所需时间限制时致电setContentView(R.layout.activity_main); 。这将清除hangfire中的作业并终止服务器上的进程。

  

参考:https://discuss.hangfire.io/t/how-to-cancel-a-job/872

答案 1 :(得分:0)

是的,您可以在启动时设置FetchNextJobTimeout。通过设置FetchNextJobTimeout,您可以控制作业可以运行多长时间,然后Hangfire开始在另一个线程上再次执行该作业。

services.AddHangfire(config => {
       config.UseMemoryStorage(new MemoryStorageOptions { FetchNextJobTimeout = TimeSpan.FromHours(24) });
});