Zettelkasten

sync to async 구현

·수정 2026.04.23·수정 2

요약

  • 핵심 아이디어 한 줄 요약
  • “이 노트는 왜 중요한가?” → 맥락 설명

본문

  • sync_to_async는 thread_sensitive랑 executor를 인자로 받음
    • thread_sensitive 설정시 메인 스레드에서만 돌 수 있음. 기본 True
      • [django는 db 커넥션을 thread local](django orm은 thread-safe 하다)에 보관하고 있음
      • 따라서 django orm을 이용하는 함수들은 메인스레드에서 실행되어아함
    • default executor는 ThreadPoolExecutor(max_workers=1)
  • asgiref sync.py에 있는 SyncToAsync 구현
  • asgiref는 동기 작업을 스레드 풀 or 별도 실행기로 밀어 넣어서 await 가능한 작업처럼 보이게 해줌