Yaroslav Bulatov
Yaroslav Bulatov

Reputation: 57953

dealing with subprocess that floods stdout

I'm dealing with subprocess that occasionally goes into infinite loop and floods stdout with garbage. I generally need to capture stdout, except for those cases.

This discussion gives a way to limit the amount of time a subprocess takes, but the problem is that for a reasonable timeout it can produce GB's of output before being killed.

Is there a way to limit the amount of output that's captured from the process?

Upvotes: 1

Views: 386

Answers (2)

nmichaels
nmichaels

Reputation: 50989

You can connect the subprocess's stout to a file-like object that limits the amount of data it will pass to the real stdout when you call Popen. The file-like object could be a fifo or a cStringIO.

Upvotes: 1

unwind
unwind

Reputation: 399989

If you can't detect when the flooding occurs, chances are nobody else can. Since you do the capturing, you are of course free to limit your capturing, but that requires that you know when the looping has occured.

Perhaps you can use rate-limiting, if the "regular" rate is lower than the one observed when the spamming occurs?

Upvotes: 1

Related Questions