我在Python 2.7中使用Tornado Web Server(版本4.1)来创建REST Web应用程序。我的一个请求处理程序(web.RequestHandler)使用multipart / mixed内容类型处理由多个HTTP请求组成的批处理请求,这些请求组合成一个HTTP请求。我目前有批处理请求处理程序能够接收POST请求并将multipart / mixed内容解析为单个请求,如下所示:
GET /contacts/3 HTTP/1.1
Accept: application/json
我的问题是,将这些内部批处理请求转换为Tornado可以在我的请求处理程序中提供服务的请求的好方法是什么?我想在我的批处理请求处理程序中收集响应,并且一旦这些请求全部完成,就返回包含所有批处理响应的单个多部分/混合响应。
使用HTTPClient执行批量处理的请求感觉就像是矫枉过正。看起来我应该能够构建一个请求对象并将其注入web.Application进行处理 - 但是我不知道如何做到这一点。谢谢!
答案 0 :(得分:2)
龙卷风对此没有任何直接支持。通过HTTP客户端可能是最简单的解决方案。但是,如果您真的对避免该路线感兴趣,那么这里是解决方案的草图,它依赖于<?php
if(!empty($_POST))
{
if(empty($_POST['offered']) || empty($_POST['description']))
{
?>
<div class="alert alert-warning alert-dismissible text-center" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>Add some offers and descriptions
</div>
<?php
}
else
{
$title=$_POST['offered'];
$offer=$_POST['description'];
$data=array($page_id,$title,$offer);
if($data)
{
$add=add_data($data);
header('location:hotel1_galery.php?page_id=1 && msg=Add Offers Successfully');
}
else if(!empty($_POST['offered']) && !empty($_POST['description']))
{
?>
<div class="alert alert-danger alert-dismissible text-center" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span><?php echo "Add offers and descriptions "; ?></div>
<?php
}
}
}
模块中定义的接口。
通过将tornado.httputil
和write
的参数保存到内部缓冲区来定义实现HTTPConnection
接口的类。
write_headers
是HTTPServerConnectionDelegate
。使用您的连接类的实例作为两个参数调用其Application
方法(第一个参数并不重要,但它应该是唯一的,因为我们不会重复使用&#34;连接& #34;那个对象很好。)
start_request
返回HTTPMessageDelegate
。调用其start_request
,headers_received
(用于POST / PUT)和data_received
方法来发出请求。调用finish
后,处理程序将运行并重新调用连接对象。