流式传输响应并不适用于Flask-Restful

时间:2016-10-20 11:25:40

标签: python flask-restful

我有一个场景,我希望通过Flask API显示长时间运行的脚本的输出。我按照Flask的一个例子进行操作。我在浏览器中获得dmesg个蒸汽。

import subprocess
import time
from flask import Flask, Response

app = Flask(__name__)

@app.route('/yield')
def index():
    def inner():
        proc = subprocess.Popen(
            ['dmesg'],  # call something with a lot of output so we can see it
            shell=True,
            stdout=subprocess.PIPE
        )

        for line in iter(proc.stdout.readline,''):
            time.sleep(1)  # Don't need this just shows the text streaming
            yield line.rstrip() + '<br/>\n'

    return Response(inner(), mimetype='text/html')  # text/html is required for most browsers to show this

问题是,我很久以来一直在使用Flask-Restful。所以我想用它做流媒体。我试过了它并没有用。

import subprocess
import time
from flask import Response
from flask_restful import Resource

class CatalogStrings(Resource):

    def get(self):
        return Response(inner(), mimetype='text/html')

def inner():
    proc = subprocess.Popen(
        ['dmesg'],  # call something with a lot of output so we can see it
        shell=True,
        stdout=subprocess.PIPE
    )

    for line in iter(proc.stdout.readline, ''):
        time.sleep(1)  # Don't need this just shows the text streaming
        yield line.rstrip() + '<br/>\n'

请帮忙

0 个答案:

没有答案