Fastapi의 Background task

2024년 1월 19일 금요일

Today I Learned

날짜

2024년 1월 19일 금요일

내용

오늘은 어쩌다보니 내 생각의 흐름을 적지 않았다. 막혀서 깊게 고민한 적이 없어서 그런가..

API

어제 리뷰들에 대한 세부 정보를 만드는 함수들을 다 만들었다. 오늘은 프론트에서 해당 데이터를 요청할 때를 응답하는 API를 만들었다. 이미 데이터를 저장하는 건 완성되어 있었기 떄문에, 알맞게 받아서 주는 것은 어렵지 않았다.

프론트를 내가 하는게 아니다보니 다른 사람도 쉽게 이해할 수 있도록 작성하려고 나름 노력했다. 각주에도 헷갈릴 만한 부분도 적고, parameter나 변수, 함수 이름도 최대한 직관적으로 적었다. 너무 이름이 길어서 좀 거슬리긴 한데, 이도 저도 아닌 이름보다 낫기도 하고 정 거슬리면 실서버 배포 전에 바꾸면 되겠지.

이전에, 팀 내에서 type hinting 에 대해서도 얘기했기 때문에 빠지지 않고 넣었다. 역시 좋은 습관은 정말 귀찮다.

background task

리뷰를 import 해오는 것은 background task로 진행된다. FastAPI Document에서 말하는 background task는 “응답을 반환한 후에 실하기 위한 태스크를 정의할 수 있다.” 라고 한다. 클라이언트에서 다른 곳에서 리뷰를 가져오도록 요청을 하면, 완료 후 응답하기엔 시간이 길어지니 우선 요청이 잘 받아졌다고 응답을 보내고 그 사이에 importing 작업을 진행한다.

이번 스프린트에서도 이 import 기능이 포함된다. 기존에는 import만 완료되면 끝이지만, 이번에는 분석도 해야한다. background task가 아니면 비동기 함수기 떄문에, 순서대로 코드를 작성하면 되지만 이미 요청과 응답이 끝난 후에야 import가 종료된다. 그럼 리뷰 분석 요청을 어떻게 해야할지에 대해 고민된다. 프론트가 또 요청하도록 하면 쉽기야 하겠지만, 좋은 생각이 아니라는 생각이 든다. 같은 서버에서 진행할 프로세스를 불필요하게 프론트까지 갔다 올 이유가 없기 떄문이다. import 과정에 대해 주기적으로 검사하는 것도 너무 비효율적이라고 생각한다.

지금 드는 생각은, background task 목록에 import를 넣고 , 바로 뒤에 분석하는 함수를 넣는 것이다. 이 Task가 비동기적으로 처리되니까 순차적으로 수집, 분석이 실행될 수 있지 않을까? 간단한 함수를 만들어서 테스트를 해봤는데 잘 되지 않는다. 내가 아직 이해를 잘 못하고있나… 여러 방법을 생각해보고 월요일에 적용해봐야 겠다.

회고

원래 0에서 90으로 만드는 것보다 90에서 100까지 보완하는게 훨씬 어렵고 오래 걸린다고 했으니 다음주도 빡세게 해야지.