在Node.js中保存应用程序状态

如何保存node.js的应用程序状态主要由HTTP请求组成的应用程序?

我在Node.JS中有一个脚本,它使用RESTful API将大量(10,000多种)产品导入到电子商务应用程序中。 API对请求数量有限制,我们正盯着这个限制。 在以前的运行中,脚本退出时出现Error: connect ETIMEDOUT可能是由于超出了API限制。 我想能够尝试连接5次,如果一小时后恢复失败,恢复限制。

在发生崩溃的情况下(停电,networking崩溃等),保存整个过程也是有益的。 并且能够从停止的位置恢复脚本。

我知道Node.js是一个巨大的事件队列,所有的http请求和它们的callback都会被放到这个队列中(和其他一些事件一起)。 这使得它成为保存当前执行状态的主要目标。 其他令人愉快的(对于这个项目来说不是完全必要的)将能够在不同networking上的多个机器之间分配工作以增加吞吐量。

那么现在有没有办法做到这一点? 一个框架也许? 或者我需要自己实现这一点,在这种情况下,任何有用的资源如何做到这一点将不胜感激。

我不确定你说的是什么意思

我知道Node.js是一个巨大的事件队列,所有的http请求和它们的callback都会被放到这个队列中(和其他一些事件一起)。 这使得它成为保存当前执行状态的主要目标

如果您发现与答案有关,请随时对此进行评论或阐述。

也就是说,如果您只是在寻找这个特定任务的持久性机制,我可能会推荐Redis ,原因如下:

  • 它允许对许多数据types进行primefaces操作 ; 例如,如果您在Redis中有一个名为num_requests_made的项目(代表所请求的数目),则可以使用INCR num_requests_made在Redis中轻松地增加此数字,并且它保证是primefaces级的,从而使扩展到多个工作者更容易。
  • 它有几种数据types可以certificate对您的需求有用; 例如,一个简单的string可以表示在特定时间段(如前面的项目符号点)所做的API请求的数量; 您可能会在失败的API请求中存储需要在列表中重新提交的详细信息; 等等
  • 它提供的pub / sub机制可以让你在程序的多个实例之间轻松地进行通信。

如果这听起来很有趣也很有用,而且您还不熟悉Redis,那么我强烈build议您尝试一下交互式教程 ,它会向您介绍几种数据types和命令。 另一个很好的阅读材料是15分钟介绍Redis数据types 。