Node Web服务,执行一个大任务的时候,全世界都停止了?

testcpast
  • 709

后台用express做web服务。有一个需求是需要将动态内容生成静态页面。也就是express读取所有的文章,然后将文章写成html。这个过程中,程序没有做任务限制。当生成1万篇文章的过程中。在访问一些需要express处理的动态功能,发现都在等待状态了。是不是这一个生成的任务,把cpu全占了?导致其他的业务都只能等待。那应该怎么解决这个问题呢?### 问题描述

回复
阅读 1.3k
4 个回答
✓ 已被采纳

这种操作建议单独开一个进程来跑,可以试下 child_process

nodejs是单线程的,所以一个response挂住的话,所有的都需要等
可以使用eggjs,其本身就是多实例/线程的;或者pm2js来启动多个实例/线程
不过如果你开了8个实例,结果每一个都有一个巨型的response挂住了的话,那就只有等了
nodejs适合短快的处理,不适合一个response可能需要等很久的那种

检查有没有同步

如果你这个大任务不要求实时的话,可以把它分解开,分批次慢慢跑就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏