asyncio 많이 쓰는데.. 쓸만합니다.. 작업 취소가 edge-triggered (level-triggered 가 아닌) 로 된 한계가 있는데 사실 작업취소를 aware하면서 gracefully한 처리를 하는 코딩을 작성하는 일이 별로 없고, 그보다 더 큰 문제는 eventloop가 task에 대한 weak reference를 가지고 있기 때문에 gc에 의해서 사라질수 있다는 건데.. 그건 structured concurrency로 해결됩니다.

웬만한 주요 i/o 작업에 관련해서 asyncio 지원하는 라이브러리 찾는데 문제없고..

GIL? 하고는 크게 상관이 없어요.. asyncio를 CPU intensive 한 작업에 병렬로 하려고 사용한다는 접근 자체가 좀 이상하네요.. GIL이 개선되면 CPU intensive한 멀티쓰래딩에 유용하게되겠죠.. async는 i/o 병목 구간을 최대한 효율적으로 돌리는건데...

암튼 결론.. 어느 정도 디자인상의 문제는 있으나, 목적달성하는데 사용하는데 별다른 문제 없이 production에서 잘 이용하고 있습니다.

gc로 태스크가 수거되는걸 경험하신적 있나요?

물론 저도 프로덕션에는.asyncio를 질리도록 사용하고 있습니다만, 저는 지금의 사용경험이 '잘 이용하고 있다.' 라는 평가를 내릴만큼 만족스럽진 않네요..

지금의 asyncio가 GIL을 전제로 설계되어있는, 어찌보면 GIL의 회피전략이니 GIL이asyncio와 상호작용하지는 않죠.

근데 asyncio에 기반하여 돌아가는 concurrency 프로그래밍 전체의 관점에서 보면 GIL이 무관하다는 표현은 '파이썬이니까 안되는게 당연해.' 같은 이야기가 된다고 생각합니다.