我有一些工作似乎在篝火中“挂起”,可能会持续数小时,但实际上并没有做任何事情。如果一个工作的运行时间超过一定时间,Hangfire是否有办法杀死一个工作?
我在SQL服务器上运行最新版本的Hangfire。
答案 0 :(得分:0)
在你创造的工作中(无论是经常性的还是单一的后台工作)调用,将一个类型为“IJobCancellationToken”的额外参数传递给你的工作方法,
public static void Method1(string param1, IJobCancellationToken token) { }
创建作业时,使用null IJobCancellationToken标记值创建作业并保存jobId。还有另一项定期工作可以轮询这些工作,只需在BackgroundJob.Delete(jobId)
超过所需时间限制时致电setContentView(R.layout.activity_main);
。这将清除hangfire中的作业并终止服务器上的进程。
答案 1 :(得分:0)
是的,您可以在启动时设置FetchNextJobTimeout。通过设置FetchNextJobTimeout,您可以控制作业可以运行多长时间,然后Hangfire开始在另一个线程上再次执行该作业。
services.AddHangfire(config => {
config.UseMemoryStorage(new MemoryStorageOptions { FetchNextJobTimeout = TimeSpan.FromHours(24) });
});