在CRON作业中运行NodeJS异步函数是个好主意吗?

时间:2017-07-13 10:24:55

标签: node.js mongodb asynchronous cron backend

在cron作业中运行节点异步功能是个好主意吗?

是的,NodeJS是单线程的。当cron多次调用function()时会发生什么?

说情况是: - CRON Job运行5分钟调用函数() - 函数()可能需要5分钟以上才能运行 - 函数()是异步

我需要在NodeJS中使用Backend应用程序: - 从MongoDB读取数据(一次) - 根据数据,可能会有许多第三方API调用,例如GOOGLE API来计算两点之间的行驶距离 - 将总距离数据保存回MongoDB - 更新Redis缓存

你会怎么做?

非常感谢您的评论!!

谢谢。

1 个答案:

答案 0 :(得分:1)

从cron的角度来看,函数是同步还是异步并不重要。 Cron没有运行您的个人功能 - 它启动流程并等待它们完成。该过程如何在内部工作是无关紧要的。

现在,如果进程可能运行的时间超过执行之间的间隔,则需要考虑的是,两个进程可能同时运行 - 除非您明确执行某些锁定以防止这种情况发生。

如果您希望您的进程可能同时运行(如果新进程不会等待前一个进程完成),那么您将必须处理可能的竞争条件下的并发。这可能不是微不足道的,但即使您使用同步,阻塞或多线程环境,您仍然必须处理它,因此这不是特定于节点或特定于异步的。