【发布时间】:2016-01-24 23:37:19
【问题描述】:
我将exec-stream 与Node.js 一起使用,并通过其他一些转换流传输该流,最终通过node-brake 流来限制数据速率。制动流似乎没有任何作用,实际上数据最终会在长链的末端丢失。
execStream('some-external-binary').pipe(transform1).pipe(transform2).pipe(brake(1024))
我认为正在发生的事情是child_process STDOUT 流(在exec-stream 内)没有暂停,因此缓冲区会填充直到数据丢失。
child_process 流的行为是否如此?有什么方法可以让背压与child_process 流一起正常工作?
【问题讨论】:
-
我对 exec-stream 或 node-brake 没有太多经验,但我想用一个完整的例子来探讨你的问题。 gist.github.com/CodeLenny/007523ae5b13559e644f29b46364c1e4 是否与您所经历的行为相匹配?在我看来,刹车没有背压,但是当使用不同的刹车值时,我没有得到不同数量的数据。
-
@RyanLeonard 很有趣。也许这里一直存在的问题是
node-brake没有达到我的预期。是的,这似乎是对问题的一个很好的模拟。您能否将其发布为答案? -
我已经写了评论作为答案。