tornado6 @gen.engine 使用说明
时间: 2024-01-22 12:03:09 浏览: 96
`tornado6` 中的 `@gen.engine` 装饰器可以使函数以协程的方式运行。使用 `@gen.engine` 可以让函数在运行过程中遇到阻塞操作自动挂起,等待操作完成后再继续执行。这使得我们可以编写异步的代码,而不用手动地去管理回调函数。
具体使用方法如下:
1. 导入 `tornado.gen` 模块中的 `engine`。
```python
from tornado.gen import engine
```
2. 在函数上添加 `@gen.engine` 装饰器。
```python
@gen.engine
def my_func(arg1, arg2, callback):
# 函数体
```
3. 在函数中使用 `callback` 参数来传递回调函数。
```python
@gen.engine
def my_func(arg1, arg2, callback):
result = yield some_async_func(arg1, arg2)
callback(result)
```
4. 在函数中使用 `yield` 来挂起函数的执行。
```python
@gen.engine
def my_func(arg1, arg2, callback):
result1 = yield some_async_func(arg1, arg2)
result2 = yield another_async_func(result1)
callback(result2)
```
注意事项:
1. `@gen.engine` 装饰器会将函数转换为协程函数,因此不能使用 `return` 语句返回值,而必须使用回调函数来返回结果。
2. 回调函数的第一个参数应该是结果值。
3. `@gen.engine` 装饰器只能用于 `tornado.gen` 模块中的异步函数,不能用于普通的同步函数。
阅读全文