首页 新闻 搜索 专区 学院

.netcore2.1 使用hangfire 用Memory作为任务存储运行异步方法任务异常

0
悬赏园豆:15 [待解决问题]

我服务代码使用的是.netcore2.1,使用memory作为存储。当执行统计任务时,由于数据量大,在和数据库交互并等待返回结果时超过了30分钟时会导致任务没有执行完成,也不报错。

BackgroundJob.Schedule(() => DealImplamentAsync(key, no), TimeSpan.FromSeconds(1));

里面代码逻辑用的都是async/await 来实现的,当执行存储过程需要三十分钟或以上时,他有时候能从返回结果,大部分时候都没有返回结果,也不会报错,不知道为什么?我现在都想换成quartz net 来解决这个问题了。有碰到过类似情况的兄弟吗?

yjq_net的主页 yjq_net | 初学一级 | 园豆:2
提问于:2020-05-09 23:19
< >
分享
所有回答(3)
0

建议在 DealImplamentAsync 中添加 try...catch 代码捕获异常写入日志。

dudu | 园豆:39034 (高人七级) | 2020-05-10 09:34

我在底层有个全层抓取异常,但是没有抓取到任何异常,这也是让我疑惑的地方

public Task<OperateResult> StatisticsAsync()
{
return OperateUtil.ExecuteAsync(() => .....);
}

这里面封装了try catch

支持(0) 反对(0) yjq_net | 园豆:2 (初学一级) | 2020-05-11 16:38
0

会不会是内存回收掉了?

Tom.汤 | 园豆:1978 (小虾三级) | 2020-05-12 14:20

我用日志输出发现这个还占用着线程,hangfire monitorapi中的processing 包含这个任务。

支持(0) 反对(0) yjq_net | 园豆:2 (初学一级) | 2020-05-13 14:42

@yjq_net: 线程可能死掉了, 相当于结束进程一样, 但是你的IIS 或者说 程序还是正常运行的。 主线程没有挂。 可以在任务里面加日志, 看看到底停在哪里?

支持(0) 反对(0) Tom.汤 | 园豆:1978 (小虾三级) | 2020-05-13 14:50
0

你好,有解决这个问题么?我这边也遇见了这个问题,消息队列一直不消耗,数据库也超时了。

xiao99 | 园豆:188 (初学一级) | 2020-06-15 11:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册