javascript - How to stream an http response to a file, retrying on 503 -
piping response of http request file pretty easy:
http.get(url, function (res) { var file = fs.createwritestream(filename) res.pipe(file) file.on('finish', function () { file.close() }) }) but when try set retry system, things complicated. can decide whether retry based on res.statuscode, if decide retry, means not piping response writable stream, response stays open. considerably slows down execution when many retries. solution (uselessly) listen data , end events response close, if decide not retry, can not longer pipe writestream, response closed.
anyways, i'm surely not 1 wanting stream response of http request file, retrying when 503, can't seem find code "out there" this.
solved. slowness happens when lot of responses left open (unconsumed). solution response.resume() them, letting them "spew in nothingness" when retry necessary. in pseudo code:
http.get(url, function (response) { if (response.statuscode !== 200) { response.resume() retry() } else { response.pipe(file) } }) my original problem was checking wheter retry or not late, forcing me "spew nothingness" before having decided, making impossible decide not retry because data response "stream" consumed.
Comments
Post a Comment