首页 > 解决方案 > 如何在烧瓶中创建原始 http 响应?

问题描述

我正在开发一个具有 TCP 服务器的软件,该服务器可以回复在专有协议中完成的请求。

显然,该实现依赖于侦听固定端口的套接字以及分析和管理原始请求和响应。

我应该向该服务添加管理 http 请求的可能性。

我开始使用烧瓶的想法是让它管理模板渲染和响应创建,但我对第二部分有点震惊:

现在我设法用这样的东西来完成这项工作:

    with open(template_file) as f:
        template = f.read()
    app = flask.Flask('my app')  # create a context to render Response
    with app.app_context():
        context = {'title': 'mytitle', 
                'other_info':'.....',}
        rendered = flask.render_template_string(template, **context)
        response = flask.make_response(rendered)
        answer = f'''HTTP/1.0 200 OK\nContent-Type: text/html\n\n {rendered} \n\n'''
    sock.sendall(answer.encode())
    sock.close()

在这种情况下,make_response创建一个Response实例,您可以在其中获取呈现的html代码,但从 Response 到 rawhttp是我的问题。

为了解决这个问题,我手动添加了一个标题,但我认为烧瓶中有更好的方法来做到这一点,但无法弄清楚。

让问题更笼统:flask web 应用程序如何与其他应用程序共存?我必须控制流程的重点在哪里?

标签: pythonhttpflask

解决方案


推荐阅读