Назад к вопросам
Junior — Middle
61
Каким образом реализовать декоратор в Python, который может оборачивать асинхронные функции?
Компании, где спрашивали
Магнит Тех
Ответ от нейросети
sobes.tech AI
Чтобы создать декоратор в Python, который может оборачивать асинхронные функции, нужно определить асинхронную функцию внутри декоратора и использовать await для вызова исходной функции. Вот пример такого декоратора:
import functools
def async_decorator(func):
@functools.wraps(func)
async def wrapper(*args, **kwargs):
print("До вызова функции")
result = await func(*args, **kwargs)
print("После вызова функции")
return result
return wrapper
# Пример использования
@async_decorator
async def async_func(x):
await asyncio.sleep(1)
return x * 2
# Вызов из асинхронного контекста
import asyncio
async def main():
result = await async_func(10)
print(f"Результат: {result}")
asyncio.run(main())
Такой декоратор корректно работает с асинхронными функциями, позволяя выполнять дополнительные действия до и после вызова исходной функции.