在这种情况下:
async def foo(f):
async def wrapper(*args, **kwargs):
return f(*args, **kwargs)
return wrapper
@foo
async def boo(*args, **kwargs):
pass
调用foo作为boo decorator的decorator是异步调用吗?
--第一次编辑:
在这种情况下:
async def foo(f):
async def wrapper(*args, **kwargs):
return f(*args, **kwargs)
return wrapper
@foo
async def boo(*args, **kwargs):
pass
调用foo作为boo decorator的decorator是异步调用吗?
--第一次编辑:
感谢@blacknght的 comments
def foo():
def wrapper(func):
@functools.wraps(func)
async def wrapped(*args):
# Some fancy foo stuff
return await func(*args)
return wrapped
return wrapper
和
def boo():
def wrapper(func):
@functools.wraps(func)
async def wrapped(*args):
# Some fancy boo stuff
return await func(*args)
return wrapped
return wrapper
as two decorators, 和
@foo()
@boo()
async def work(*args):
pass
由于foo
正在包装work
协同程序,关键是在两个decorator 中都包装await
和func(*arg)
.