Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2011 03:58:36

kivsiak
От:
Зарегистрирован: 2007-10-22
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

torando асинхронные запросы

Перечитал 3 раза доку по торнадо, пересмотрел примеры но все равно не понимаю поведения

from time import time
import tornado.ioloop
import tornado.web
from threading import Timer

class MainHandler(tornado.web.RequestHandler):

@tornado.web.asynchronous
def get(self):
self.write("requested at " + str(time()))
Timer(10, self.on_response).start()

def on_response(self):
self.write("completed at " + str(time()))
self.finish()



class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r"/", MainHandler),
]
tornado.web.Application.__init__(self, handlers)

if __name__ == "__main__":
app = Application()
app.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Ожидаемое поведение: открыть соединение. подержать его 10 секунд. завершить соединение. Все прекрасно отработало. Пытаюсь открыть еще пару соединений в эти 10 секунд - начинают отрабатывать только по завершении первого. Т.е. вместо параллельного выполнения запросов происходит последовательное. Я как то не так понимаю что такое асинхронные запросы и как они должны работать? Таймер как то блокирует выполнение основного цикла?

Tornado 1.2.1 Python 2.7.1 ubuntu 11.04



Отредактировано (Май 15, 2011 04:01:07)

Офлайн

#2 Май 15, 2011 09:46:52

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

torando асинхронные запросы

Скорее это браузер последовательно запросы выстраивает, а не сервер.
Попробуй параллельные запросы сделать из разных браузеров, либо сделай эти запросы с разными урлами.

Офлайн

#3 Май 15, 2011 11:38:41

kivsiak
От:
Зарегистрирован: 2007-10-22
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

torando асинхронные запросы

Точно. Спасибо. /?v=1 , /?v=2 тогда поведение вполне ожидаемо. Равно как и запуск из разных браузеров. Не ожидал что браузеры по такой схеме работают, хотя если задуматься то она вполне логична.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version