javascript - Mean.js Node.js 后台进程

标签 javascript angularjs node.js mongodb meanjs

我有一个正在编写的 mean.js 应用程序,但我在概念上对后台进程感到困惑。

我需要一些在后台持续运行的进程,这些进程在 mongodb 数据库上运行并执行清理、电子邮件、推文等操作。

我需要许多与我在我的网络应用程序中相同的功能和库可用于这些后台进程。

最好的方法是什么?我是否从一个全新的源代码库开始并将这些 worker proc 视为一个单独的应用程序?或者当我用 grunt 启动 server.js 时,我是否创建一个守护进程文件夹并 fork 后台进程?

我想我把自己弄糊涂了,可能让事情变得比它应该的更复杂。我查看了 Node 守护进程和 child_processes 以及 simple_daemon。但我不确定该走哪条路。

感谢您的帮助。

最佳答案

您可以使用 setInterval() 在 mean.js 应用程序中运行计划任务或重复任务。由于 node.js 的工作方式,只要 node 正在运行您的应用程序,定义为在 setInterval() 或 setTimeout() 中运行的任何回调将在加载后运行。这意味着您可以将后台逻辑保留在 Controller /模型或相邻文件中。您可以包含您的后台脚本,例如require() - 从主 app.js 文件,或从你的 Controller 、模型等中的任何地方调用它。

例如

应用程序.js:

require('tasks/doStuff');
require('express');

/* express/app stuff here */

任务/doStuff.js:

require('mongoose');
require('some/other/stuff');

setInterval( function() {
    console.log('interval happened');
}, 1000);

此方法确实需要一些设计/架构方面的考虑。也就是说,您的任务现在与您的 node mean.js 应用程序的成功执行相关联。如果您的 mean.js 应用程序崩溃/死机,您的任务也将死机。

关于javascript - Mean.js Node.js 后台进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930464/

相关文章:

javascript - Angular : Bootstrap typeahead with multiselect

javascript - AngularJS 上带有复选框的 bool 过滤器

angularjs - 如何在 ng-messages 指令中插入表达式?

javascript - Node.js + socket.io : app on server not working correctly

javascript - 通过path.name重新挂载componentDidMount()

javascript - 将文件名从文件上传传递到文本字段

如果接收器未运行,Node.js RabbitMQ 消息会丢失

node.js - 如何只复制更改过的文件

javascript - 如何使用 AWS CodePipeline 缩小 JS

javascript - 如何在 typescript 中导入 template.html