我有一个mean.js应用程序我写作,我在概念上对后台进程感到困惑。
我需要在后台持续运行一些在mongodb数据库上运行的进程,并执行清理,电子邮件,推文等操作。
我需要在我的网络应用程序中使用许多相同的功能和库来进行这些后台操作。
最好的方法是什么?我是否从一个全新的源代码库开始,并将这些工作程序处理为一个单独的应用程序?或者,当我用grunt启动server.js时,我是否创建一个守护进程文件夹并分叉后台进程?
我认为自己很困惑,可能会让它变得更加复杂。我查看了节点守护进程和child_processes以及simple_daemon。但我不确定要走的路。
感谢您的帮助。
答案 0 :(得分:3)
您可以使用setInterval()在mean.js应用中运行预定或重复任务。由于node.js的工作方式,只要节点正在运行您的应用程序,任何定义为在setInterval()或setTimeout()中运行的回调都将在加载后运行。这意味着您可以将后台逻辑保留在控制器/模型内或相邻文件中。您可以添加后台脚本,例如require() - 来自主app.js文件,或来自控制器,模型等的任何地方。
e.g。
app.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);
这种方法确实需要一些设计/架构考虑因素。也就是说,您的任务现在与节点mean.js应用程序的成功执行相关联。如果你的mean.js应用程序崩溃/死亡,你的任务也会死亡。