Simple Flask Stream with Requests Consumer

pip install flask

from flask import Flask

import subprocess

from flask import stream_with_context, request, Response

app = Flask(__name__)

p = subprocess.Popen(['salt-run','state.event', 'pretty=True'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

@app.route("/reactor/stream", methods=["GET"])
def master_reactor():

    def generate():
      retcode = p.poll() #returns None while subprocess is running
      line = p.stdout.readline()
      yield line
      if(retcode is not None):

    return Response(stream_with_context(generate()))

if __name__ == "__main__":
    app.debug = True"")

import requests
from contextlib import closing

while True:
    with closing(requests.get('http://localhost:5000/reactor/stream', stream=True)) as r:
        print r.text