Не удается получить веб-сервер Tornado для потокового кода - PullRequest
1 голос
/ 02 июня 2011

Просто начинаю работать с 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.

Ответы [ 2 ]

1 голос
/ 02 июня 2011

Код, который вы разместили, работает, как и ожидалось, с Python 2.6.1 на Snow Leopard.Вы пробовали тестировать с помощью curl?:

curl --no-buffer localhost:8888 & curl --no-buffer localhost:8888
0 голосов
/ 19 июля 2012
  1. Пробовал с хромом в 2-х вкладках.это занимает около 10 секунд.
  2. Я пробовал с IE9 на 2 вкладках.это занимает около 5 секунд.
  3. создание веб-страницы, отправка 2 запросов AJAX по URL-адресу один за другим (с бессмысленными параметрами запроса, чтобы избежать кэширования в браузере), что занимает около 5 секунд.* Как вы обнаружили, curl тоже работает около 5 секунд.

так что это может быть поведение, определенное браузером / клиентом, которое вводит нас в заблуждение.

...