Hangfire 作业无限期重新排队(或停留在处理状态)

Hangfire job gets requeued indefinitely (or stuck in processing status)

我遇到了 hangfire 作业 的问题。我的工作可以说 运行 需要 10 分钟,即使我有 [AutomaticRetry(Attempts = 0)] 属性,该工作似乎 无限期地重复

如果我检查作业的结果,它看起来像是作业已完成,但似乎只是在进入成功状态前一秒钟,它会重新排队

我认为这是隐形重试功能的出现,因为我可以看到作业不会立即开始,而是随时都有更长的间隔。

我用的是hangfire pro和redis数据库。

如果您使用 Redis 作为作业存储,此行为可能是由 Redis 中的 Client Timeout 引起的。默认情况下,它是关闭的,但是一些托管环境有自己的默认值。由于工作人员希望连接在执行后台作业后仍处于打开状态,long-运行 作业可能会通过写入已关闭的套接字而导致异常。

您可以通过 redis.conf 或简单地使用命令关闭此设置:

CONFIG SET timeout 0