我的Tornado应用程序中有WebSocketHandler。 我不确定这是使代码异步的正确方法。
class MyHandler(WebSocketHandler):
def open(self):
do something ...
self.my_coroutine_method()
@gen.coroutine
def my_coroutine_method(self):
user = yield db.user.find_one() # call motor asynchronous engine
self.write_message(user)
答案 0 :(得分:2)
是的,这是正确的。但是,在某些情况下,简单地调用协程而不会让步会导致异常以意想不到的方式处理,因此我建议在从非协同程序调用协程时使用IOLoop.current().spawn_callback(self.my_coroutine_method)
。