ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • await vs create_task
    FastAPI 2025. 9. 14. 19:19

    await 와 create_task 모두 코루틴 객체를 이벤트 루프에 등록하고 실행하는 명령어이다.

    하지만 호출자의 즉각적인 제어권 획득 여부에 따른 차이점이 존재한다.

     


    [ await ]

     

    1. 코루틴 객체 생성하고 이벤트 루프에 등록하여 실행

    2. 이벤트 루프가 바로 이 코루틴을 실행해서 Future를 반환할때까지 기다림

     

    → 즉, await를 쓰는 순간 제어권을 양보하고, 결과값이 반환될때까지 해당 코루틴 흐름은 멈춤


    [ create.task ]

     

    1. 코루틴 객체 생성하고 이벤트 루프에 등록하여 실행

    2. 현재 코루틴은 해당 코루틴 객체를 이벤트 루프 등록과 동시에 곧바로 제어권을 반환받음

    3. Future 반환을 기다리지 않고 자신의 코루틴 흐름을 계속해서 진행

    4. 이후 await task로 미리 실행시켜놓은 코루틴 객체가 종료되었는지 확인

     

    → 즉, 이 코루틴을 이벤트 루프에서 지금부터 실행하는데, 결과는 나중에 다시 확인하겠다 라는 의미임

    async def coroutine1() :
        # ...
    
    async def foo() :
        print("[foo]")
        # 이벤트 루프에 태스크 등록만 하고 제어권을 반납하지는 않음
        task = asyncio.create_task(coroutine1())
       
        # task와 무관한 작업 수행
        #...
        #...
        #...
        
        # 실제로 필요하기 직전에 결과가 완료되었는지 확인 또는 기다림
        await task

    'FastAPI' 카테고리의 다른 글

    FastAPI의 동기 함수 처리  (0) 2025.09.14
    asyncio  (0) 2025.09.13
    coroutine  (0) 2025.09.13
    비동기 작동원리  (0) 2025.09.13
    FastAPI를 사용하는 이유  (0) 2025.09.02