我在节点中可以有多少个同时调度的作业

And*_*man 5 cron design-principles node.js express

在我正在使用的这个Node应用程序中,用户可以预定约会。预定约会后,用户将在实际约会前X个小时通过邮件收到提醒。

我正在考虑将Node-schedule用于此任务。

对于每个约会:设置将来的日期,发送一次提醒邮件,然后删除此特定的计划作业

但是...随着应用程序的增长,可能会预约很多约会,这意味着将会有很多Node计划进程同时处于休眠状态并等待启动...

在正常的一天,假装我们为每个客户预订了180个未来的约会,并且假装该应用程序现在有50个客户。这使我们大约有9000个计划中的任务处于睡眠状态并等待启动。

问题:这完全可以吗?...或者所有这些同时安排的任务会很多吗?

Lau*_*rin 6

简短的回答:9000不是很多,你很好。但是,我建议您编写一个基准以供自己参考。

我检查了节点计划的来源,果然,它将计划委托给setTimeout基于日期的任务。这意味着您的作业是使用node.js内部事件循环计划的。

这段代码非常有效,因为node.js专门用于同时处理数千个请求。

无论挂起作业的数量如何,node.js只会关心下一个任务并一直休眠直到其日期(除非异步I / O中断了它),因此调度任务本质上是O(1)。