gpt4 book ai didi

job-scheduling - 取消使用 Hangfire.io 安排的正在运行的作业

转载 作者:行者123 更新时间:2023-12-04 04:27:23 25 4
gpt4 key购买 nike

我使用 hangfire.io 库安排作业,我可以观察到它正在内置仪表板中进行处理。但是,我的系统要求可以从仪表板取消作业。

有一个删除正在运行的作业的选项,但这只会改变数据库中作业的状态,不会停止正在运行的作业。

我在文档中看到有通过 IJobCancellationToken 的选项但是据我了解,它用于在整个服务器关闭时正确停止作业。

有没有办法以编程方式取消已经运行的任务?

我是否应该编写自己的组件来定期提取数据库并检查当前服务器实例是否正在运行已被取消的作业?例如维护字典 jobId -> CancellationTokenSource,然后使用适当的 token 源发出取消信号。

最佳答案

文档有点不完整。 IJobCancellationToken.ThrowIfCancellationRequested方法在满足以下任一条件后抛出异常:

  • Hangfire 服务器关闭已启动。当有人调用Stop时触发此事件或 Dispose BackgroundJobServer的方法.
  • 后台作业不在 Processed 中状态。
  • 后台作业正在由另一名工作人员执行。

  • 后两种情况是通过查询当前后台作业状态的作业存储来执行的。因此,如果您也从仪表板中删除或重新排队,取消 token 也会抛出。

    关于job-scheduling - 取消使用 Hangfire.io 安排的正在运行的作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28443525/

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