如何在Kue管理陷入困境的工作?

时间:2016-08-30 16:28:00

标签: javascript node.js redis kue

我正在使用Kue为我的MEAN.js应用创建作业。如果应用程序空闲一段时间Redis连接已关闭,显然Kue正在尝试在连接关闭时处理作业,并且我遇到了一些错误。

我每隔6秒钟就会看到卡住的工作,但这似乎无助于避免错误。

app.jobs.watchStuckJobs(1000 * 6);

这些是我正在处理的每个作业,连接关闭后和恢复连接之前的错误:

ERROR: { [Error: Redis connection to XXX failed - read ETIMEDOUT] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'read' }

ERROR: { [AbortError: Redis connection lost and command aborted. It might have been processed.]
      code: 'UNCERTAIN_STATE',
      command: 'BLPOP',
      args: [ 'q:send-email-invitations:jobs', 0 ],
      origin: { [Error: Redis connection to XXX failed - read ETIMEDOUT] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'read' } }

我一直在阅读Kue documentation for stuck jobs,但他们推荐的解决方案是使用Domains,我正在使用的Node版本已被弃用;使用promises或将错误绑定到uncaughtException,这将丢失错误上下文。

在这种情况下,最好的方法是什么,所以我不会丢失错误上下文,我可以追踪工作中发生的事情?

如果我必须选择其中一个选项,哪个是我能选择的最佳选择?为什么?

我需要注意哪些Redis配置或Kue以外的任何内容?

0 个答案:

没有答案