首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hangfire作业超时

Hangfire作业超时
EN

Stack Overflow用户
提问于 2017-06-29 04:53:44
回答 2查看 678关注 0票数 3

我有一些作业看起来像是挂起的,可能会运行几个小时,但实际上什么也没做。如果Hangfire运行的时间超过一定的时间,有没有办法杀死一个作业?

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

EN

回答 2

Stack Overflow用户

发布于 2018-04-03 13:42:56

在创建作业(无论是循环作业还是单个后台作业)调用时,将"IJobCancellationToken“类型的额外参数传递给作业方法,

代码语言:javascript
复制
public static void Method1(string param1, IJobCancellationToken token) { }

创建作业时,使用空的IJobCancellationToken令牌值创建作业并保存jobId。有另一个循环作业,它会轮询这些作业,并在超出所需的时间限制时简单地调用BackgroundJob.Delete(jobId)。这将从hangfire中清除作业,并终止服务器上的进程。

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

票数 1
EN

Stack Overflow用户

发布于 2019-11-12 11:42:56

是的,你可以这样做,你需要在启动时设置FetchNextJobTimeout。通过设置FetchNextJobTimeout,您可以控制在Hangfire开始在另一个线程上再次执行作业之前,作业可以运行多长时间。

代码语言:javascript
复制
services.AddHangfire(config => {
       config.UseMemoryStorage(new MemoryStorageOptions { FetchNextJobTimeout = TimeSpan.FromHours(24) });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44812366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档