Node JS在重启时坚持承诺(可能是版本控制)

时间:2018-02-20 14:54:52

标签: node.js promise persistence bots

想象一下构建一个bot,它将对话框作为nodejs中的promise链处理

bot.ask('question')
    .then(answer => { ...someDataAndCode })
    .then(somethingElse)
    .then(etc);

现在,在部署新版本时,所有的承诺都消失了,当然,你已经挂了机器人没有回复的对话框。问题是:

  • 是否有任何npm包/方法会在重启之间保持承诺?
  • 如果持久化承诺更新的逻辑,是否有保留旧版本的旧版本的软件包,以便旧的对话框采用旧的方式"?

1 个答案:

答案 0 :(得分:0)

我不熟悉任何持久的承诺模块,我认为保持每个链式承诺的状态是非常困难的。

但无论如何,我会采用另一种方法解决你的问题。我不会杀死以前的服务器,但我会在不同的端口运行新的更新版本。然后我将配置反向代理(我假设您使用类似nginx的路由将流量路由到节点)以将所有新用户发送到新版本的节点服务器。

当旧节点服务器完成其工作并且即使最后一个用户已经离开时,您也可以终止该服务器。

PS所有这一切都取决于你使用反向代理的假设,你不会在问题中说明,所以我的解决方案不适合你的项目