我知道我的问题看起来很广泛,但我希望这个问题的答案会给我正确的指导。我是Tornado框架的新手,基本上我是Python新手。 我正在研究这个project: 能否请您解释几行代码:
@gen.coroutine
def get_me(self):
raise gen.Return((yield self._api.get_me()))
@gen.coroutine
注释的用途是什么?raise
关键字用于例外,不是吗?为什么我们在这里使用它?generator
的形式返回所有内容。 Tornado框架的概念是使用生成器吗?是什么原因? 答案 0 :(得分:3)
@gen
是一个装饰器,它会根据定义修改它下面的函数(https://wiki.python.org/moin/PythonDecorators)raise
返回值并将except gen.Return
抓住(我发现它很难看,但它有效)。答案 1 :(得分:1)
在Tornado文档之后,我发现确保异步行为的一般方法是使用事件循环和回调函数。但是使用回调在语法上很困难并且有点令人困惑。所以龙卷风的开发者想出了装饰器的使用(就像烧瓶,樱桃等)。
gen.py
模块,在该模块下定义了协程装饰器。这确实是确保Tornado并发性的一种优雅方式。raise
将处理异常。我发现它很简单,只需返回except gen.Return
。generators
只是简单易用。