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

2024-05-12 23:53:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在学习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天的时间来解决这个问题,但我自己实在做不到。你知道吗

我仍然认为它不能只在服务器端完成。可能会关门的。你知道吗


Tags: 数据instanceselfaddwebtask客户机time
1条回答
网友
1楼 · 发布于 2024-05-12 23:53:25

使用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()

相关问题 更多 >