Найти - Пользователи
Полная версия: torando асинхронные запросы
Начало » Web » torando асинхронные запросы
1
kivsiak
Перечитал 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
o7412369815963
Скорее это браузер последовательно запросы выстраивает, а не сервер.
Попробуй параллельные запросы сделать из разных браузеров, либо сделай эти запросы с разными урлами.
kivsiak
Точно. Спасибо. /?v=1 , /?v=2 тогда поведение вполне ожидаемо. Равно как и запуск из разных браузеров. Не ожидал что браузеры по такой схеме работают, хотя если задуматься то она вполне логична.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB