有人可以帮我解决这个问题。这是我的代码:
class Handler(RequestHandler):
@asynchronous
def get(self):
res = 'result '
_t = threading.Thread(target=self._thread, args=(res,))
print _t, time.time()
_t.start()
def _thread(self, response):
time.sleep(5)
IOLoop.instance().add_callback(callback=lambda: self.print_response(response))
def print_response(self, _response):
self.write(_response)
self.finish()
application = Application([
(r'/', Handler),
])
if __name__ == '__main__':
application.listen(8889)
IOLoop.instance().start()
在浏览器上,在一个选项卡中访问localhost:8889,在另一个选项卡中访问localhost:8889:我会在第二个选项卡中看到“结果”,直到第一个选项卡完成,在5秒后。 我想我创建了2个线程并行处理,并在完成后,add_callback结果主循环。 Tab1完成后不久Tab2应该有结果??? 如果我将Handle类复制到Handle1类,则添加路由r' / 1',Handle1。再试一次,localhost:8889和localhost:8889/1 --->它会好的。 任何人都可以向我解释这个问题,以及如何解决它。 谢谢!
答案 0 :(得分:0)
这不是龙卷风,而是浏览器。浏览器不喜欢对同一个事情发出多个请求,因此在第一个请求完成之前它们不会发送第二个请求。如果你使用两个不同的浏览器(或不同的网址),你会发现它有效。