0

私は現在python + tornadoを学んでおり、この問題で停止しself.write(var)
ました:私が試したものを使用しても、クライアントに(たとえば)数秒ごとに1つのデータを書き込む必要があります:

  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日で解決していますが、本当に自分ではできません。

サーバーサイドだけではまだ無理だと思います。閉鎖される可能性があります。

4

1 に答える 1

1

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()
于 2013-04-08T20:43:53.263 に答える