我有一个正在编写的 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/