在cron作业中运行节点异步功能是个好主意吗?
是的,NodeJS是单线程的。当cron多次调用function()时会发生什么?
说情况是: - CRON Job运行5分钟调用函数() - 函数()可能需要5分钟以上才能运行 - 函数()是异步
我需要在NodeJS中使用Backend应用程序: - 从MongoDB读取数据(一次) - 根据数据,可能会有许多第三方API调用,例如GOOGLE API来计算两点之间的行驶距离 - 将总距离数据保存回MongoDB - 更新Redis缓存
你会怎么做?
非常感谢您的评论!!
谢谢。
答案 0 :(得分:1)
从cron的角度来看,函数是同步还是异步并不重要。 Cron没有运行您的个人功能 - 它启动流程并等待它们完成。该过程如何在内部工作是无关紧要的。
现在,如果进程可能运行的时间超过执行之间的间隔,则需要考虑的是,两个进程可能同时运行 - 除非您明确执行某些锁定以防止这种情况发生。
如果您希望您的进程可能同时运行(如果新进程不会等待前一个进程完成),那么您将必须处理可能的竞争条件下的并发。这可能不是微不足道的,但即使您使用同步,阻塞或多线程环境,您仍然必须处理它,因此这不是特定于节点或特定于异步的。