해결된 질문
작성
·
180
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 코드 보기)