Node Web服务,执行一个大任务的时候,全世界都停止了?
后台用express做web服务。有一个需求是需要将动态内容生成静态页面。也就是express读取所有的文章,然后将文章写成html。这个过程中,程序没有做任务限制。当生成1万篇文章的过程中。在访问一些需要express处理的动态功能,发现都在等待状态了。是不是这一个生成的任务,把cpu全占了?导致其他的业务都只能等待。那应该怎么解决这个问题呢?### 问题描述
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这种操作建议单独开一个进程来跑,可以试下 child_process
nodejs是单线程的,所以一个response挂住的话,所有的都需要等
可以使用eggjs,其本身就是多实例/线程的;或者pm2js来启动多个实例/线程
不过如果你开了8个实例,结果每一个都有一个巨型的response挂住了的话,那就只有等了
nodejs适合短快的处理,不适合一个response可能需要等很久的那种
检查有没有同步
如果你这个大任务不要求实时的话,可以把它分解开,分批次慢慢跑就可以了