gpt4 book ai didi

.net - 检查hangfire重复作业是否已经在运行

转载 作者:行者123 更新时间:2023-12-03 23:22:14 24 4
gpt4 key购买 nike

我有一个利用 Hangfire 执行后台任务和作业的网络应用程序。

我有一个经常性的工作,这个工作的 2 个实例不能在任何时候执行。可以说这项工作需要更长的时间才能执行。

我想检查作业当前是否正在运行,如果是,请不要重新运行。

我环顾四周,找不到任何有关此的信息。

最佳答案

有多个地方可以回答其中的一部分,但为了让我完全正常工作,我必须做两件事:

  • 了解属性
  • 把它们放在接口(interface)上,而不是实现方法

  • 因此,如果您使用接口(interface)(例如使用依赖注入(inject))来启动 Hangfire 作业,请将它们放在接口(interface)定义中
    [DisableConcurrentExecution(10)]
    [AutomaticRetry(Attempts = 0, LogEvents = false, OnAttemptsExceeded = AttemptsExceededAction.Delete)]

    如果您不以这种方式执行 AutomaticRetry 属性,则默认情况下该作业将被添加到计划作业列表中,以便在第一个作业完成时运行。

    这按我想要的方式工作:

    每 5 分钟运行一次作业。如果在接下来的 5 分钟间隔内,前一个作业仍在运行,请不要将它的新实例排队。

    如果你把这些放在实现接口(interface)的方法上,它什么也不做。

    关于.net - 检查hangfire重复作业是否已经在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48111905/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com