티스토리 뷰

AI/Python

[Python] 비동기 데코레이터

brave_sol 2025. 2. 14. 14:57

시간 측정 함수를 데코레이터로 사용하였으나, 비동기 함수 실행시 작동하지 않는 문제 발생

 

1. 데코레이터 작동 순서

@time_check
async def my_func():
    ...

# 위 코드는 내부적으로 다음과 같이 동작합니다
my_func = time_check(my_func)  # 데코레이터 적용 시점
# 이 시점에서 time_check가 비동기 함수라면 await가 필요하게 되어 문법적으로 불가능

 

2. 데코레이터 자체를 비동기 함수로 만들면 안될까?

* python의 데코레이터 규칙

- 데코레이터는 함수 정의 시점(프로그램 시작 전, 코드가 파이썬에 의해 해석되는 시점)에 실행 : await 사용 불가

- 비동기 작업은 런타임에 실행되어야 하므로, 내부 래퍼 함수에서 처리해야 한다.

- 따라서, 데코레이터 자체는 일반 함수로 정의하고, 비동기 처리가 필요한 부분은 내부 래퍼 함수에서 async/await 를 사용

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함