使用
chain_future
链条
queue.get
“未来”与您控制的其他未来(某种指示器/标志),然后只需在关闭时解析标志未来:
from tornado.concurrent import Future, chain_future
class MyHandler(tornado.web.RequestHandler):
def initialize(self):
# of course you can create that in get as well
self.close_indicator = Future()
@tornado.gen.coroutine
def get(self):
queue = self.getQueue() # returns a tornado.queues.Queue
qget_future = queue.get()
chain_future(self.close_indicator, qget_future)
_ = yield qget_future
self.write("whatever")
def on_connection_close(self):
super().on_connection_close()
# set close indicator by resolving future
# result will be copied to chained future (qget_future)
self.close_indicator.set_result(None)