Есть ли способ получить тело асинхронно с сервером Tornado из POST / PUT? - PullRequest
0 голосов
/ 25 января 2019

С сервером aiohttp возможно await тело запроса асинхронно, таким образом, оно возвращает руку к циклу событий:

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

Однако, используя Tornado, я не могу найти способсделать это асинхронно.Единственный способ получить тело - это:

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

Поэтому, если клиент отправляет большой файл, цикл событий торнадо будет блокироваться, пока не будет получено все тело, я прав?

1 Ответ

0 голосов
/ 25 января 2019

Нет, цикл событий не заблокирован.post() не запускается, пока тело не будет полностью загружено.Для пошаговой обработки тела см. Декоратор @stream_request_body.

...