如何在Tornado请求中执行Tornado请求

3
我正在使用 Python 2.7 版本的 Tornado Web Server(版本4.1)创建一个 REST 网络应用程序。我的其中一个请求处理器(web.RequestHandler)处理批量请求,这些请求由多个 HTTP 请求组成,使用 multipart/mixed 内容类型合并为一个 HTTP 请求。我目前已经可以接收POST请求并将multipart/mixed内容解析为像下面这样的单独请求:
GET /contacts/3 HTTP/1.1
Accept: application/json

我的问题是,如何将这些内部分批请求转换为Tornado可以在请求处理程序中提供服务的请求?我希望在我的批请求处理程序中收集响应,并且一旦这些请求全部完成,返回一个包含所有批处理响应的单个multipart/mixed响应。使用HTTPClient来执行批处理请求似乎过于复杂。看起来我应该能够构建一个请求对象并将其注入到web.Application中进行处理 - 然而,我却不知道如何做到这一点。谢谢!
1个回答

2
龙卷风(Tornado)本身并没有直接支持这个功能。通过HTTP客户端是最简单的解决方案。但是,如果您真的想避免使用HTTP客户端,下面是一个解决方案的草图,它依赖于tornado.httputil模块中定义的接口。
定义一个类来实现HTTPConnection接口,通过将writewrite_headers的参数保存到内部缓冲区中。 Application是一个HTTPServerConnectionDelegate。使用你的连接类的实例作为两个参数调用它的start_request方法(第一个参数并不重要,但应该是唯一的,因为我们不会重用“连接”这个对象)。 start_request返回一个HTTPMessageDelegate。调用它的headers_receiveddata_received(对于POST/PUT)和finish方法来发起请求。一旦你调用了finish,处理程序将运行并回调你的连接对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接