【问题标题】:Hangfire - new server appears every time code changedHangfire - 每次代码更改时都会出现新服务器
【发布时间】:2018-06-16 11:34:57
【问题描述】:

我是 Hangfire 的新手。我让它在开发机器上运行,但每次我更改代码并运行应用程序(asp.net Core 2 MVC)时,仪表板上的列表中都会出现一个新服务器。

我在文档或示例文件中找不到任何关于此的内容。我读过有关取消令牌的信息,但这些似乎是针对故意关闭请求而不是代码更新?!

这是预期的行为吗?我是否希望每次更新代码时都在 IIS 中手动重新启动应用程序(显然,在服务器上比在开发机器上更重要)。

谢谢。

【问题讨论】:

  • 目前面临同样的问题..您找到解决方案了吗?
  • 我发现他们往往会在不久之后自行消失?!
  • 谢谢 - 是的,看起来他们正在超时或类似的事情。

标签: hangfire


【解决方案1】:

找到了解决@这个link的工作,它对我有用。感谢 ihockett。

TLDR

我知道目前这是一个相当老的话题,但我遇到了类似的问题。我想为解决由于服务器关闭而中止的工作做出贡献。如果禁用自动重试 (Attempts = 0),或者作业因服务器关闭而失败并且超出最大尝试次数,您可能会遇到此问题。对我们来说不幸的是,这导致新作业在手动删除或重新排队之前无法开始处理。

基本上,我采用以下方法来自动处理中止的作业:在启动期间和初始化 BackgroundJobServer 之后,我使用 MonitoringApi 来获取所有当前正在处理的作业。如果有的话,我会遍历每个并调用 BackgroundJob.Requeue(jobId)。代码如下,供参考:

var monitor = Hangfire.JobStorage.Current.GetMonitoringApi();                
if (monitor.ProcessingCount() > 0)
{                    
    foreach (var job in monitor.ProcessingJobs(0, (int)monitor.ProcessingCount()))
    {
        BackgroundJob.Requeue(job.Key);                        
    }
}

【讨论】:

    猜你喜欢
    • 2018-09-26
    • 2019-05-04
    • 1970-01-01
    • 2017-04-25
    • 2020-05-18
    • 2016-12-12
    • 2019-07-21
    • 1970-01-01
    • 2014-11-06
    相关资源
    最近更新 更多