내일배움캠프 59일차

김서영·2022년 11월 24일
0

내일배움캠프 TIL

목록 보기
61/85

1. 오늘 내가 한 일!

어제 끝내지 못한 딥러닝 모델을 장고에 연결하는 일을 마무리 했다! 어려운 내용이었지만 다 하니 뿌듯했다!!🥳

2. 튜터님의 질문

웹서버를 만드는데 이런 정보는 알아야 하지 않겠냐는 튜터님의 질문이 있어 찾아보았다!

1.웹서버란?

하드웨어 소프트웨어 혹은 2개가 같이 동작하는 것!
http프로토콜을 이용해 클라이언트의 요청을 서버에 전달하고 이를 서버라는 또 다른 컴퓨터가 그 요청을 처리하여 다시 클라이언트에게 전달해준다.

2. Apache

웹서버 프로그램, 클라이언트 요청당 하나의 스레드가 처리하는 구조
사용자가 많으면 스레드 생성, 메모리 및 cpu 낭비가 심하다.

3. Nginx

nginx는 클라이언트의 request 요청을 처리해주는 웹 서버
reverse proxy, 로드밸런싱, 캐싱 등의 기능을 지원하며, 클라이언트의 요청을 nginx가 받은 후 service(django) 데이터를 넘겨주는 역할을 해준다.

Apache, Nginx 참고자료 : https://bentist.tistory.com/80
웹서버 참고자료 : https://developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_web_server

3. 오늘 완성한 장고&머신러닝 연결 코드

def post(self, request, filter_id):
        data = request.data # input_img
        filter = Filter.objects.get(id=filter_id) 
        filter_name = filter.filter_image
        slz = ImageStorageSerializer(data=data)
        if slz.is_valid():
            outputimage = slz.save(user=request.user, filter_id=filter_id) # 로그인된 유저&filter의 id를 저장(filter_id는 나중에 output_img를 불러올 때 필요하기 때문에)
            slz_id = slz.data['pk']
            number = slz_id
            uploadurl = f'media/output/save{number}.jpg'
            style(slz.data['input_img'], filter_name).save(uploadurl) # media 파일에 저장
            outputimage.output_img.name = uploadurl
            outputimage.save() # db에 저장
            return Response(slz.data['output_img'], status=status.HTTP_200_OK)
        else:
            return Response(slz.errors, status=status.HTTP_400_BAD_REQUEST)
profile
개발과 지식의 성장을 즐기는 개발자

0개의 댓글