AI 탐구노트

[우분투] 썸네일 메이커 서버 & 클라이언트 동시 실행 본문

기술 팁

[우분투] 썸네일 메이커 서버 & 클라이언트 동시 실행

42morrow 2024. 10. 19. 10:00

 

 

멀티쓰레딩, 멀티프로세싱, MPI 등과는 무관한데, 제목이 너무 거창합니다. -_-; 터미널에서 bash 명령할 때 한줄에 여러 프로그램을 함께 구동시키는 것을 얘기하는 것이니 오해 없으시길... 

 

구현 내용 

앞서 만들었던 썸네일 메이커를 쉽게 터미널에서 호출해서 사용하도록 해 봅니다. 그냥 터미널 Cli로 처리하는 방식으로 진행하는데 동작 방식이 서버와 클라이언트로 구성되어 있다보니 고려해야 할 것이 하나가 더 있었습니다.

 

고려사항

 

서버(FastAPI 서버)는 계속 로딩해 두어야 할지?

 

우선 서버는 터미널에서 바로 종료시킬 수 있으면 될 것 같았습니다. 백엔드에 띄워두고 쓸 수도 있지만 굳이 쓰지 않을 때도 부하를 줄 필요는 없을 것 같았기 때문입니다. 이 부분은 나중에 리소스를 어느 정도 잡아 먹는지 확인해보고 부하가 거의 없다면 나중에는 백엔드 프로세스로 전환하는 것을 고려해 보겠습니다. 다만, 지금은 필요할 때만 로딩되도록 하는게 낫겠죠?

 

서버를 백그라운드 프로세스로 돌려야 할지?

백그라운드로 동작하면 좋긴 하지만 종료 시킬 때 프로세스를 확인하고 kill 처리를 해줘야 합니다. 이걸 약간 수정해서 프로세스 id를 수작업으로 확인하는 대신 실행 커맨드 상에서 그걸 알아서 kill해 주는 방식이 좋을 것 같았습니다. 

 

서버 구동 후 로딩 확인하고 클라이언트(크롬 브라우저)가 동작해야 할텐데... 

확인해 보면 FastAPI 서버 구동 후 대략 0.5초 뒤면 로딩이 완료되었습니다. sleep을 주더라도 많이 줄 필요는 없어 보였고 대략 1초 정도를 주는 걸로 해 봅니다. 

 

최종 커맨드  

위의 고려사항을 반영한 커맨드는 다음과 같습니다. 

$ python3 -m uvicorn main:app --reload & pid=$! ; sleep 1; google-chrome http://localhost:8000 ; kill $pid

 

 

제 경우, ~/.bashrc 파일에 아래와 같이 등록해 두고 사용 중입니다.

thumb(){
    cd ~/coding/thumbnail_maker_py; python3 -m uvicorn main:app --reload & pid=$! ; sleep 1; google-chrome http://localhost:8000 ; kill $pid
}

 

더 나이스한 좋은 방법이 있겠지만 당분간은 불편함이 별로 없어서 이렇게 써 보려고 합니다. ^^