【发布时间】:2014-10-10 11:38:44
【问题描述】:
在 NodeJS 服务器中,我会定期从另一个 WebServer 获取图片并将它们存储在特定文件夹中。
我正在使用此命令执行此操作(在每 10 秒由计时器轮询的函数中):
request(cameraRequestOptions).pipe(fs.createWriteStream("./campics/cam" + cameraId + "pic" + latestCameraPictureNumber + ".jpg"));
由于“latestCameraPictureNumber”,目标图像文件的名称正在更改。
我遇到了 EMFILE 异常问题,奇怪的是,这仅在服务器运行的某些机器上发生,而且似乎只有在很长一段时间后才会发生。
正如我已经发现的那样,这可能意味着我打开了太多的 FileStreams 或 Sockets。所以我不确定我的管道是否有问题:我是否必须关闭 WriteStream 或请求?什么时候怎么做?
文档说:
readable.pipe(destination, [options])#
destination Writable Stream 写入数据的目的地
options 对象管道选项
end Boolean 当阅读器结束时结束作者。默认 = 真
所以我以为它会自动关闭。
感谢您的帮助。
【问题讨论】:
-
您是否尝试向请求和文件流添加一些事件处理程序以分别检查它们是否正在结束和完成?如果他们正在结束/完成,需要多长时间?
标签: javascript node.js