首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让Tornado get服务器线程代码

无法让Tornado get服务器线程代码
EN

Stack Overflow用户
提问于 2011-06-02 09:54:42
回答 2查看 701关注 0票数 1

刚开始使用Tornado,不知道我哪里出错了,但我根本不能让它线程,这是我正在测试的代码。

代码语言:javascript
复制
    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()

如果我运行它,它可以工作,但它阻塞了整个then服务器5秒,所以如果我尝试快速连续加载该页面两次,它将打印‘线程启动’,等待5秒,第一个浏览器将加载,然后它将再次打印‘线程启动’,等待5秒,然后发送给第二个浏览器页面,因此总共花费了10秒。

即使运行tornado网站上的非阻塞示例,我也会遇到这个问题。有什么想法吗?

我尝试过Python2.6和2.7,easy_install的Tornado1.2.1。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-02 20:19:01

您发布的代码在Snow Leopard上使用Python 2.6.1可以像我预期的那样工作。您尝试过使用curl进行测试吗?:

代码语言:javascript
复制
curl --no-buffer localhost:8888 & curl --no-buffer localhost:8888
票数 1
EN

Stack Overflow用户

发布于 2012-07-19 14:01:40

  1. 我在2个标签页中尝试了chrome。这大约需要10秒。
  2. 我尝试在两个选项卡中使用IE9。这大约需要5秒。
  3. 编写一个网页,逐个发送2个AJAX请求到URL,(使用无意义的查询参数来避免浏览器缓存),这大约需要5秒。
  4. 正如你所发现的,curl的工作时间也在5秒左右。

因此,这可能是浏览器/客户端指定的行为,使我们感到困惑。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6209624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档