有没有一种方法可以通过POST / PUT与Tornado服务器异步检索主体?

时间:2019-01-25 11:03:16

标签: python asynchronous tornado aiohttp

使用aiohttp服务器,可以异步await请求正文,这样可以将请求返回事件循环:

async def post_handler(request):
    data = await request.json()
    return aiohttp.web.Response(status = 201, body = data, content_type='application/json')

但是,使用龙卷风我找不到异步的方法。 检索身体的唯一方法是:

async def post(self):
    data = self.request.body
    self.write(data)

因此,如果客户端发送一个大文件,龙卷风事件循环将一直阻塞,直到整个尸体被收回为止,对吗?

1 个答案:

答案 0 :(得分:3)

否,事件循环没有被阻止。在正文已完全加载之前,post()不会运行。要逐步处理主体,请参见@stream_request_body装饰器。