メインプロセスに影響を与えずに遅延機能のトルネードに同等のコマンドがありますか(したがって、メインスレッドが新しい関数呼び出しを処理している場合でもコールバックが実行されます)
11229 次
3 に答える
30
これを試して:
import time
from tornado.ioloop import IOLoop
from tornado.web import RequestHandler, asynchronous
from tornado import gen
class MyHandler(RequestHandler):
@asynchronous
@gen.engine
def get(self):
self.write("sleeping .... ")
self.flush()
# Do nothing for 5 sec
yield gen.Task(IOLoop.instance().add_timeout, time.time() + 5)
self.write("I'm awake!")
self.finish()
ここから撮影。
于 2012-06-21T09:24:45.283 に答える
21
4.1 以降、gen.sleep(delay)
メソッドが追加されていることに注意してください。
それで
yield gen.Task(IOLoop.instance().add_timeout, time.time() + 5)
ただになるだろう
yield gen.sleep(5)
于 2015-02-12T01:29:54.997 に答える
7
冗長な場合があります
コールバックスタイルが好き
class MyHandler(RequestHandler):
@asynchronous
def get(self):
self.write("sleeping .... ")
self.flush()
IOLoop.instance().add_timeout(time.time() + 5, self._process)
def _process(self)
# Do nothing for 5 secs
self.write("I'm awake!")
self.finish()
于 2013-10-25T01:10:03.963 に答える