项目地址:(目前第二版:v0.2.0)
https://github.com/DoubleSpout/ClusterPlus(2011.12.27日不能使用bug已经修复)
前面一篇博客已经谈到ClusterPlus是一款多进程多任务管理moudle,对于开发过node.js的同学们最大的郁闷莫过于重复的 ctrl+c 和 按 上+回车,每次代码有一点变动就必须干掉进程,然后再重启看运行情况。对于这个问题已经有aheckmann 提供的reload.js模块了,当有文件内容发生变化时,自动重新启动node.js进程。
虽然看似已经圆满解决了,但是当我们在写代码时总归有可能出现语法错误,比如忘记加 大括号,或者使用了中文的圆括号,又或者代码写到一半,想先save一下等等。当出现上述问题时,reload.js就悲剧了。
如果用cluster模块自带的reload.js,再配合自动重新启动子进程的功能,就会反复的启动,反复的死掉,直到系统崩溃,或者主进程崩溃,除非你能在崩溃之前将代码改正确,让子进程顺利启动起来,否则还是只能将reload.js关掉,重复ctrl+c和上+回车。
ClusterPlus v0.2.0带来了全新的node.js编程体验,除了上一篇博客介绍的多进程多任务功能外,这次加入了增强型relaod.js功能。
简单介绍一下:v0.2.0带来的新变化
1、API增加一个reload选项,默认是true打开(不过目前只完美支持一个子进程的情况,在启动多个子进程时会默认为关闭),当然您也可以手动将其设置为false关闭,或者指定某一个目录,表示当这个目录下的文件发生变化时,重启子进程,ClusterPlus会自动遍历并监听该目录下的所有子目录,目前仅支持一个子进程save和reload功能。
2、当第1步重新启动的子进程由于语法错误或者其他原因意外挂掉时,不会自动反复重启,而是会挂起,等待用户再次保存文件,然后尝试重启,当失败再次挂起,成功则启动成功。
3、改写v0.1.0部分写的比较烂的代码,引入了AsyncProxy模块,增强异步的性能,修改了部分bug。
4、重新改写了reload.js文件,可以遍历多层监听目录
5、在reload工作时,增加僵尸进程杀死功能
大家期待v0.3.0吧!
上个simplejs小例子,各位可以试着运行下看看效果:ClusterPlus的API和下载地址请去github上吧
https://github.com/DoubleSpout/ClusterPlus
1 | var http = require('http'), |
郑重声明:此模块未经严格测试,出现bug请联系我吧!
另注:目前开2个以上的node.js进程频繁的保存文件可能会出现启动多余进程的bug,请tx们开发时尽量少开node.js进程。在线上环境建议将reload功能关闭。