【问题标题】:No Mongo Query gets result when cron is running in backgroundcron 在后台运行时没有 Mongo 查询得到结果
【发布时间】:2017-06-16 02:57:24
【问题描述】:

我一直将 NodeJS 作为服务器端,将 MongoDB 作为我们的数据库。搭配起来真的很棒。

现在我已经将node-schedule 库添加到我们的系统中,以调用类似 cron-job 的函数。

这个过程大约需要几个小时才能完成。

我的问题是每当 cron 运行时,我网站的所有用户都没有来自服务器的响应,即数据库被锁定。

卡在一个星期的问题上,需要好的解决方案来运行 cron ,而不影响用户使用网站。

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及必要的最短代码 重现它在问题本身。没有明确的问题陈述的问题对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example.

标签: node.js mongodb cron


【解决方案1】:

通常您会想要编写一个工作程序并在不属于您的服务器的不同入口点运行该工作程序。您可以通过多种方式实现这一目标。

1) 在另一台服务器上编写一个 worker 来与你的数据库交互

2) 在与你的 api 交互的另一台服务器上编写一个 service worker

3) 使用同一台服务器,但设置一个 cronjob 来执行在指定时间完成工作的文件。

但是您不应该从您的服务器运行所在的同一入口点执行此操作。你需要一个不同的执行文件。

你可以做一件事来运行它,它不会让你的服务器陷入困境,那就是让你的节点调度触发器运行一个子进程。 https://nodejs.org/api/child_process.html

【讨论】:

    猜你喜欢
    • 2021-09-25
    • 1970-01-01
    • 2015-11-22
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多