0

我的 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)
4

1 回答 1

2

是的,这是正确的。但是,在某些情况下,简单地调用协程而不使用 yield 可能会导致异常以意想不到的方式被处理,所以我建议IOLoop.current().spawn_callback(self.my_coroutine_method)在像这样从非协程调用协程时使用。

于 2015-03-17T02:41:13.137 回答