我将NodeJS作为服务器端,MongoDB作为我们的数据库。它真的很棒。
现在我已将node-schedule
库添加到我们的系统中,以调用类似cron-job的函数。
这个过程大约需要几个小时才能完成。
我的问题是每当cron运行时,我站点的所有用户都得不到服务器的响应,即数据库被锁定。
坚持一周的问题,需要很好的解决方案来运行cron,而不会影响使用该网站的用户。
答案 0 :(得分:0)
通常,您需要编写一个worker并在不属于您的服务器的不同入口点运行该worker。有多种方法可以实现这一目标。
1)在另一台服务器上编写一名工作人员与您的数据库进行交互
2)在与您的api交互的另一台服务器上编写服务工作者
3)使用相同的服务器,但设置一个cronjob来执行在指定时间完成工作的文件。
但是您不应该从运行服务器的相同入口点执行此操作。您需要一个不同的执行文件。
你可以做一件事来运行它,它不会让你的服务器陷入困境,那将是你的node-schedule运行子进程的触发器。 https://nodejs.org/api/child_process.html