【发布时间】:2020-07-30 06:29:00
【问题描述】:
是否可以向hangfire(Redis Storage)发送心跳来告诉系统该进程还活着?目前我将InvisibilityTimeout 设置为TimeSpan.MaxValue 以防止hangfire 重新启动作业。但是,如果进程失败或服务器重新启动,该作业将永远不会从正在运行的作业列表中删除。所以我的想法是,消除大超时并发送一种心跳。这可能吗?
【问题讨论】:
-
服务器重启时是否有多个实例在运行?
-
@jayasurya_j 你是什么意思?我认为目前不会,因为hangfire 没有意识到工作会消亡。
-
我想写一个永远监听队列的作业(在无限循环中运行),我想将超时设置为最大值,但是因为我在启动时使用了 BackgroundJob.Enqueue().. cs 我认为每次服务器启动或每次新部署发生时,我们都在排队一个永远运行的工作。所以不知道如何在hangfire中实现一个永远运行的工作。有什么想法吗?
-
@jayasurya_j 有同样的问题,所以目前没有:) 可以将后台作业用于长时间运行的进程。但他们没有安排。并且未显示在仪表板中。此外,从仪表板启动和服务器启动后也是不可能的。
-
这是一个关于 Hangfire 的长期开放错误。 github.com/HangfireIO/Hangfire/issues/1197 所以不确定是否真的有一个好的解决方案 atm。我,我会重写这项工作,而不是一个永恒的循环,一旦完成就重新安排自己。
标签: c# .net-core scheduled-tasks hangfire