@Nodar
Python, Ruby, JavaScript

Где и как исполняется асинхронный код в Tornado?

Привет.

Решил разобраться во внутренностях Tornado, тк последний год активно использую этот фреймворк. Не могу понять, как Tornado работает при использовании неблокирующих I/O операций, а точнее - пока сервер обрабатывает запросы, где исполняется код обработчика запроса? В доках написано(либо было написано, точно видел), что Tornado в отличие от Twisted использует только 1 поток, и если этот поток занят I/O, то где исполняется код обработчика запроса? В перерывах между операциями I/O?
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ответы на вопрос 2
@766dt
Он не занят I/O. Он просто по кругу, на всех источниках I/O, по-быстрому проверяет не пришло ли что, и вот если пришло, то передает управление в корутину, которая ждала данных от этого источника.
А дальше за асинхронную обработку ввода и вывода отвечает уже ОС, насколько я понимаю.
Ответ написан
Комментировать
@lega
Бесконечный цикл в котором отрабатывают все callbacks из списка, далее принимаются все io события, которые вызывают зарегистрированные на них callbacks (те самые get/post не напрямую), которые добавляют новые callbacks в список, и потом все по сначала.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы