본문 바로가기
Python

Python - asyncio DeprecationWarning: There is no current event loop

by 올엠 2022. 11. 27.
반응형
DeprecationWarning: There is no current event loop

파이썬은 멀티 스레드 기반으로 실행하기에는 구조상 문제점이 많다.

asyncio 는 파이썬에서 싱글스레드 기반에서 비동기 처리시에 활용할 수 있는 최고의 기술이라고 할 수 있다.

필자 역시 스레드 처리를 사용하다가, 변수들의 사용이 불안정함과 다수의 스레드시 처리속도가 급감하는 상황을 경험하고, coroutine 방식으로 처리할 수 있는 asyncio를 사용하도록 코드를 변경하였다.

그런데 사용중 아래와 같은 오류를 발견하게 되었다.

오류를 확인해본 결과 asyncio의 사용 방식이 3.10 버전이상부터 변경되었고, 3.11에서는 호환이 되지 않는다고 한다 그럼 어떻게 변경되었을까?

핵심만 보면, 더이상 event_loop를 따로 설정해주지 않고 run을 이용해서 간편하게 사용할 수 있도록 변경되었다.

Before

loop = asyncio.get_event_loop()
loop.run_until_complete(your_def(....))
loop.close()

After

asyncio.run(your_def(...))

이유를 확인해보면, run 내부 코드를 통해 확인할 수 있다.

아래와 같이 내부에 event_loop를 처리해는 코드를 포함하고 있기 때문에, run만 이용하여 간편하게 구동이 가능하다.

댓글0