본문 바로가기
Python

[파이썬으로 웹개발] 내일배움캠프 개발일지 모음 사이트 후기

by 돈민찌 2021. 11. 7.
반응형

 

SCC 내일배움캠프 개발일지모음!!

 

itwassummer.shop

이것저것 할 일이 많아서 뭘 해야 할 지 모르는 기간을 보내고 있다. 주말에 짬이 생겨서 내일배움캠프 수강생들의 개발일지를 수집하고 검색할 수 있는 간단한 사이트를 만들었다. 기능 구현에 집중하기 위해서 뷰 디자인은 다음카카오의 브런치를 많이 참조했다. 한시간에 한번씩 등록된 멤버들의 블로그를 스크랩해 몽고디비에 담아오는 파이썬 파일과, 메인 REST API 로직이 담긴 플라스크 파일을 어떻게 배포하는 것이 좋을까 고민한 끝에, EC2 인스턴스 하나에 몽고디비와 크롤링 파일을 가동하고, 플라스크 앱 파일은 ElasticBeanstalk를 통해 자동재배포하도록 했다. 이게 뭐 별거라고 재미있었다. 이번에는 최근에 알게 된 플라스크의 블루프린트 기능과, 파이몽고의 텍스트 검색 기능 (+정확도 순 정렬까지)을 제대로 구현해내서 스스로 뿌듯한 작은 프로젝트였다. 역시 머리 싸매고 앉아있는 것보다 뭐라도 만들어봐야 내것이 되는 것 같다.

파이몽고에서 텍스트를 일치하는 순서대로 정렬하는 방법은 꽤나 어려운 부분이었는데,

client = MongoClient()
db = client.get_database("member_card")
col2 = db.get_collection("posts")

# col2.create_index({"$**": pymongo.TEXT})
cursor = col2.find(
	{"$text": {"$search": query}},
	{"score": {"$meta": "textScore"},
	"_id": False})
cursor.sort([("score", {"$meta": "textScore"})])
post_list = list(cursor)

이런 식으로 인풋으로 들어온 query 변수를 search 하고, 그 텍스트 일치 정도에 따라 점수를 계산해 점수가 높은 순으로 정렬하는 방식이었다. 

출처: 파이몽고(pymongo.readthedocs.io)

또 이번에 처음으로 파이썬의 스케줄링 라이브러리를 사용해 본 것도 꽤 재미있는 경험이었다. 스프링 강의 듣고 잊고 있던 크론 식도 다시 공부해보고, 각 로직이 겹치지 않게 시간도 적절히 조절해 데이터베이스가 내 손을 떠나도 계속해서 업데이트 되도록 해봤다. 그래도 리소스 낭비를 줄이기 위해 한시간에 한번 정도만 스크랩을 하기는 하지만, 요즘 다들 지쳐서 TIL을 못쓰고 있어서(나도...) 그런지 크게 실시간으로 다뤄야 할 필요를 못 느낀 것도 있었다.

이제 웬만한 사이트는 2~3일이면 뚝딱해낼 수 있는 수준은 됐다. 다음엔 admin 페이지와 wtf 폼, flask_login을 활용하는 프로젝트도 해볼까 싶다. 근데 당장은 스프링 공부에 매진해야 할 듯.

반응형

댓글