python 3.8 RuntimeError: Event loop is closed
2020. 11. 15. 23:40ㆍTrouble Shooting
728x90
python 3.8 이후부터 windows에서 async 한 개발을 하면 정상 동작을 하였음에도 불구하고
다음과 같은 오류가 나타납니다.
RuntimeError: Event loop is closed
이러한 이슈로 많은 사람들이 해결책을 찾기 위해
aiohttp가 아닌 httpx를 사용을 권장하지만 근본적인 해결책은 되지 않는 것 같습니다.
이유는 미세까진아니고 조금 체감이 될 정도로 httpx.AsyncClient()가 aiohttp보다 느리게 체감됩니다.
해당 이슈를 해결하기 위한 해결책으로 baysul 이라는 유저가 다음과 같은 내용을 제시했는데
window를 사용함과 동시에 Python이 3.8 이상일 때 발생하는 현상으로
Window Selector 이벤트 루프 정책을 글로벌할게 설정하면 이를 해결할 수 있다고 합니다.
github.com/encode/httpx/issues/914#issuecomment-622586610
import sys
if __name__ == '__main__':
py_ver = int(f"{sys.version_info.major}{sys.version_info.minor}")
if py_ver > 37 and sys.platform.startswith('win'):
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
매우 잘됩니다.
728x90