Просто начинаю работать с Tornado, понятия не имею, что я делаю не так, но я вообще не могу разобраться с этим, вот код, с которым я тестирую.
import tornado.ioloop
import tornado.web
import time
from threading import Timer
class MainHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
t = Timer(5.0, self.on_response)
t.start()
print 'thread started'
def on_response(self):
self.write(str(time.time()))
self.finish()
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Если я запускаю это, оно работает, но блокирует весь веб-сервер на 5 секунд, поэтому, если я попытаюсь загрузить эту страницу дважды подряд, она выведет «поток запущен», подождите 5 секунд, первый браузер будет загрузите, затем он снова напечатает «поток начался», подождет еще 5 секунд, а затем отправит страницу второму браузеру, что займет всего 10 секунд.
Даже запустив неблокирующий пример с сайта торнадо, я столкнулся с этой проблемой. Есть идеи?
Пробовал с python 2.6 и 2.7, Tornado 1.2.1 от easy_install.