어제 끝내지 못한 딥러닝 모델을 장고에 연결하는 일을 마무리 했다! 어려운 내용이었지만 다 하니 뿌듯했다!!🥳
웹서버를 만드는데 이런 정보는 알아야 하지 않겠냐는 튜터님의 질문이 있어 찾아보았다!
하드웨어 소프트웨어 혹은 2개가 같이 동작하는 것!
http프로토콜을 이용해 클라이언트의 요청을 서버에 전달하고 이를 서버라는 또 다른 컴퓨터가 그 요청을 처리하여 다시 클라이언트에게 전달해준다.
웹서버 프로그램, 클라이언트 요청당 하나의 스레드가 처리하는 구조
사용자가 많으면 스레드 생성, 메모리 및 cpu 낭비가 심하다.
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
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)