我正在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 文档,但他们推荐的解决方案是使用Domains,我使用的 Node 版本已弃用;使用承诺或将错误绑定到uncaughtException
,这将丢失错误上下文。
在这种情况下,最好的方法是什么,这样我就不会丢失错误上下文,并且可以跟踪作业发生了什么?
如果我必须选择其中一个选项,我可以选择哪个是最好的,为什么?
我需要注意任何 Redis 配置或 Kue 之外的任何内容吗?