我目前正在学习python+tornado,并被这个问题阻止了:我需要每隔几秒钟(例如)写一些数据到客户端,即使使用self.write(var)
我试过:
-
time.sleep
-被阻塞 -
yield gen.Task(IOLoop.instance().add_timeout, time.time() + ...)
-伟大的事情,但我仍然得到完整的请求在超时结束 -
.flush
-由于某些原因,它不想返回Bdata到客户端 -
.PeriodicCallback
-浏览器窗口只是加载和加载与另一个上层方法
class MaHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
@tornado.gen.engine
def get(self):
for x in xrange(10):
self.write(x)
time.sleep(5) #yes,it's no working
。谢谢你的帮助。我要花4-5天的时间来解决这个问题,我一个人真的做不到。
我仍然认为这不能只在服务器端完成。可以关闭
使用PeriodicCallback类
class MyHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
self._pcb = tornado.ioloop.PeriodicCallback(self._cb, 1000)
self._pcb.start()
def _cb(self):
self.write('Kapooya, Kapooya!')
self.flush()
def on_connection_close(self):
self._pcb.stop()