Предположим, я асинхронно выполняю гипотетически длительный http-вызов в Tornado:
@tornado.gen.engine
def get():
response = yield asyncHTTPClient.fetch(...)
# Response parsing
body = response.body
...
Я не понимаю, является ли вызов asyncHTTPClient.fetch
асинхронным и обрабатывается в другом потоке, а выполнение возвращается Tornado во время ожидания, response
не будет пустым, когда поток продолжит выполнение пока он не прервется снова после завершения асинхронного вызова?
Моя путаница связана с тем, что в javascript, например, после выполнения асинхронного вызова поток выполнения продолжается:
function sayHelloAsync(){
// async call
setTimeout(function(){
console.log('Hello')
}, 3000)
// Will be printed first
console.log('Hi')
}
Это напечатает:
Hi
Hello
Что мне здесь не хватает?