请教如何限制 fs.createReadStream().pipe() 和 fs.createWriteStream() 的速度?
on(‘data’) 去计算?然后pause?有没有更好的办法呢?
读取的时候,不清楚,但是写的时候有办法。 数据读取到一个buffer里,在执行写入操作的时候,一点点的写。 别用pipe. 声明一个 标记 已写入的多少长度的变量,mark 一个 每次写入多少长度的变量。limit
var mark = 0,limit = 1024; writable.write(buffer.slice(mark,limit),(err)=>{ mark+=limit; })
setTimeout
pipe 会自动限速的
pipe 会自动调速的,不用关心
pipe
可以看看这个能满足你的要求:throttle
另一个库 https://www.npmjs.com/package/stream-throttle
@alsotang 我知道他有个根据写入速度来自动调整读取速度,但是我想手动限制读取或写入速度,应用场景就是,某个用户上传或下载是通过node的stream来实现的,这个时候需要限制每个用户的上传或下载的速度。
@flamingtop 这个库亲测可以,多谢
@hisune 用 throttle 这个库的话,只能限制下载速度是吗?
如果上传的话,即使 node 限了速度,那么用户的文件还是会全速传到 nginx 吧?然后 nginx 再慢慢传给 node?
@alsotang 如果通过nginx的话,应该是上传是没法限制的
@hisune 你们的 node 直接端口对外服务?
@alsotang 某些服务是
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
读取的时候,不清楚,但是写的时候有办法。 数据读取到一个buffer里,在执行写入操作的时候,一点点的写。 别用pipe. 声明一个 标记 已写入的多少长度的变量,mark 一个 每次写入多少长度的变量。limit
setTimeout
pipe 会自动限速的
pipe会自动调速的,不用关心可以看看这个能满足你的要求:throttle
另一个库 https://www.npmjs.com/package/stream-throttle
@alsotang 我知道他有个根据写入速度来自动调整读取速度,但是我想手动限制读取或写入速度,应用场景就是,某个用户上传或下载是通过node的stream来实现的,这个时候需要限制每个用户的上传或下载的速度。
@flamingtop 这个库亲测可以,多谢
@hisune 用 throttle 这个库的话,只能限制下载速度是吗?
如果上传的话,即使 node 限了速度,那么用户的文件还是会全速传到 nginx 吧?然后 nginx 再慢慢传给 node?
@alsotang 如果通过nginx的话,应该是上传是没法限制的
@hisune 你们的 node 直接端口对外服务?
@alsotang 某些服务是