Expressjs多线程

10

在Node.js上是否可以有多个线程?我正在使用Express.js和Multer进行图像上传。当一个图像大小很大,网页需要完成另一个请求时,它会等待图像上传完成。是否可能使图像上传使用其他线程?


据我所知,Node.js是单线程的。你不能让另一个线程为你工作。但是,由于上传工作是异步进行的,因此您可以向服务器发送另一个请求,您的请求将与上传函数一起被处理。 - giri-sh
我不确定我是否理解了你的意思。上传图片确实是异步上传的,但在我开始上传图片时,我无法发送其他请求。 附注:我正在使用这个插件:ng-file-upload - Honchar Denys
你是否会遇到任何错误,或者下一个请求丢失,或者只有在图像上传后才处理下一个请求? - giri-sh
不会丢失,也没有错误,它会等待图像上传完成后再发出请求。 - Honchar Denys
如果您的应用程序受限于CPU性能,您可以使用Socketnaut(多线程)或Cluster(多进程)来扩展主模块。Socketnaut还提供了一个示例,专门针对Express应用程序。 - undefined
2个回答

10
Node.js专注于异步处理。它能够同时接受图像上传和提供其他请求服务。如果它不能这样做,那是因为您的代码正在进行某种同步处理。有一个cluster模块可以在多个进程(而不是线程)上运行相同的node.js代码;但这不是您想要的。您可能会发现了解并发和并行的区别很有趣。该文章侧重于Go语言,因此您不必担心node.js的细节。您不需要另一个线程 - 您需要更好地了解node.js的工作方式。也许您可以在另一个问题中发布您代码的相关部分以获得更具体的反馈。

0
Socketnaut可以用来扩展Express服务器的主线程。存储库中提供了一个示例链接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接