• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

BackgroundTask 인자값 전달

24.03.04 23:33 작성 조회수 82

1

안녕하세요 강사님 강의 재밌게 잘보고 있습니다

BackGround task 강의에서 궁금한게 생겨서 질문 남깁니다.

 

아래는 verify_otp_handler 의 선언부인데

def verify_otp_handler(

request : VerifyOTPRequest,

background_tasks : BackGroundTasks

... )

backgound_tasks 라는 객체는 DI로 받지도 않고 있는데 어떻게 함수 내부에서 사용될 수 있는지가 궁금합니다.

request 라는 객체는 request 헤더부에서 넘어온 값이 프레임워크에 의해서 VerifyOTPRequest로 전처리되거라 어디서부터 왔는지 그 출처를 알겠지만,

backgound_tasks는 DI도 되지 않았고 헤더부에서 넘어온 것도 아닌데 어떻게 생성된건지 궁금합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요. FastAPI는 서버가 동작할 때 router에 연결된 함수의 signautre를 분석하는 과정을 거치는데요. 이 때 parameter에 적힌 type hint에 따라 해당 parameter에 어떤 값을 전달할지 결정됩니다. 따라서 BackGroundTasks라고 type hints를 적어주게 되면, FastAPI에 의해서 background_tasks 객체가 주입됩니다. (FastAPI 코드 보기)