python - 如何在烧瓶中创建原始 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 应用程序如何与其他应用程序共存?我必须控制流程的重点在哪里?
解决方案
推荐阅读
- python - 就地合并排序报告索引超出范围错误
- sockets - SocketIO 没有监听“on”函数
- php - 如何在新的分页符中重复表头
- reactjs - 在深层子级或配置文件中访问顶级道具的最高效方法是什么?
- reactjs - setInterval 中的 setState 未按预期运行
- javascript - 尝试将数组的元素添加在一起
- c - 为什么竞争条件发生在循环中?
- spring-boot - 如何在 Eclipse 中从我的应用程序中打开源代码文件?
- javascript - 在 JS 中迭代 JSON 结构
- javascript - 事件处理函数中的变量不是动态解析的。为什么?