如何在几秒钟内返回一些变量给客户端



我目前正在学习python+tornado,并被这个问题阻止了:我需要每隔几秒钟(例如)写一些数据到客户端,即使使用self.write(var)
我试过:

  1. time.sleep -被阻塞
  2. yield gen.Task(IOLoop.instance().add_timeout, time.time() + ...) -伟大的事情,但我仍然得到完整的请求在超时结束
  3. .flush -由于某些原因,它不想返回Bdata到客户端
  4. .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()

相关内容

  • 没有找到相关文章

最新更新