我正在使用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以外的任何内容?