Flask AttributeError:“蓝图”对象没有属性“ response_class”

时间:2018-08-24 17:00:24

标签: python-3.x flask response blueprint

我正在尝试让Flask路由将从日志逐行输出的文本流返回到我的AJAX调用中,如下所示:

my_app / auth / views.py:

@bp.route('/output_stream', methods=['GET', 'POST'])
def output_stream():
    def generate():
        if request.method == "POST":
            ...
            ...
            for line in iter(lambda: stdout.readline(2048), ""):
                data_buffer += line
                print(line, end="")
                yield line + '\n'
                if re.search(r'Done', line):
                    print('No more data')
                    break

            print('finished.')

            client.close()

    return bp.response_class(generate(), mimetype='text/plain')

我正在__init__.py中注册我的Flask应用,如下所示:

from flask import Flask

...
app = Flask(__name__)

...
...

from my_app.auth.views import bp
app.register_blueprint(bp)

但是,由于某些原因,它会不断抛出Flask AttributeError: 'Blueprint' object has no attribute 'response_class'

我的烧瓶是最新的:

# pip install --upgrade Flask
Requirement already up-to-date: Flask in /usr/lib/python3.5/site-packages (1.0.2)

有人知道这可能是什么问题吗?

1 个答案:

答案 0 :(得分:1)

代替:

return bp.response_class(generate(), mimetype='text/plain')

您可能想要:

from flask import Response, stream_with_context
# in output_stream:
return Response(stream_with_context(generate()), mimetype='text/plain')

stream_with_context是必需的,因为您在生成器内部访问request