刚刚开始使用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秒钟,所以如果我尝试快速连续加载这个页面两次,它将打印'thread started',等待5秒,第一个浏览器将加载,然后它将再次打印'thread started',再等5秒,然后发送第二个浏览器页面,总共需要10秒。
即使在龙卷风网站上运行非阻塞示例,我也遇到了这个问题。有什么想法吗?
尝试使用python 2.6和2.7,来自easy_install的Tornado 1.2.1。
答案 0 :(得分:1)
您发布的代码按照我的预期工作,使用Snow Leopard上的Python 2.6.1。您是否尝试过使用curl进行测试?:
curl --no-buffer localhost:8888 & curl --no-buffer localhost:8888
答案 1 :(得分:-1)
所以,这可能是浏览器/客户端指定的行为让我们感到困惑。