我正在开发一个 asp.net mvc-5 Web 应用程序,并且在使用 Hangfire 工具运行长时间运行的后台作业时遇到了问题。问题是如果作业执行时间超过 30 分钟,hangfire 会自动启动另一个作业,所以我最终会同时运行两个类似的作业。
现在我有以下内容: -
- asp.net mvc-5
- IIS-8
- 挂火 1.4.6
- 视窗服务器 2012
现在我已经定义了一个hangfire 重复作业,在每天17:00 运行。后台作业主要扫描我们的网络中的服务器和虚拟机并更新数据库,重复作业将在完成执行后发送电子邮件。当执行时间少于 30 分钟时,重复性作业过去运行良好。但是今天随着我们系统的发展,重复性工作在 40 分钟后完成,而不是像以前那样需要 22-25 分钟。我收到了 2 封电子邮件而不是一封电子邮件(电子邮件之间的时间约为 30 分钟)。现在我手动重新运行作业,我注意到问题如下: -
“当循环作业连续执行 30 分钟时,将启动循环作业的新实例,所以我将有两个实例而不是一个同时运行,所以我收到了 2 封电子邮件。”
现在,如果重复作业的时间少于 30 分钟(例如 29 分钟),我不会遇到任何问题,但如果重复作业的执行时间超过 30 分钟,那么出于某种原因或另一个挂火将启动一个新作业。虽然当我在作业执行期间访问hangfire仪表板时,我发现只有一个活动作业,但当我监控我们的数据库时,我可以从sql分析器中看到有两个作业正在访问数据库。这发生在重复作业开始 30 分钟后(在我们的例子中是 17:30),这就是为什么我收到 2 封电子邮件,这意味着 2 个重复作业在后台运行,而不是一个。
那么,任何人都可以就此提出建议,如果当前的重复作业执行时间超过 30 分钟,我如何避免挂火自动启动新的重复作业?谢谢