Я новичок в торнадо.Как создать неблокирующую функцию?
Это интересно о части Coroutines.
Так что я сначала пытаюсь преобразовать блокирующую функцию в неблокирующую.
@tornado.concurrent.return_future
def calculate(callback):
start_time = time.time()
res = urllib2.urlopen("https://www.google.com/")
print time.time()-start_time
callback(res)
class MainHandler(tornado.web.RequestHandler):
@tornado.gen.coroutine
def get(self):
start_time = time.time()
res = yield [calculate(), calculate()]
print time.time()-start_time
Но я получил:
1.41436505318
1.38487792015
2.80179595947
Это I/O связаны, поэтому я предполагаю, что общее время, потраченное должно быть приближенным к более одного времени, затрачиваемого (1.41436505318). Но, похоже, это блокировка.
Так что я задаюсь вопросом, что происходит не так? Как я могу преобразовать блокирующую функцию в неблокирующую функцию?