[해결 완료]
배포에 사용한 프리티어 리눅스 컴퓨터가 문제가 아니었음
배포에 많이 사용되는 WSGI (게이트웨이)는 2종류가 있다.
1. uwsgi
2. gunicorn
아래 문제 해결을 위해 구글링을 하다보니 uwsgi를 쓸때 발생한 오류들이 gunicorn으로 갈아타니 해결되었다는 글이 종종 나왔다.
지푸라기라도 잡는 심정으로 설치된 uwsgi 환경설정 다 풀어주고 새로 gunicorn을 셋팅해 주었다.
(앉은자리에서 6시간 순삭) 결국 해결됨..내가 원하던 요청에 대한 응답이 잘 받아져서 정말 행복했다.
[배포 후 오류 발생]
1. 기능적 구현이 로컬 runserver 환경해서는 에러없이 잘 진행이 되었음.
2. AWS EC2 배포함
3. 다른 기능들은 괜찮지만, 소셜로그인 관련 요청에 대한 에러 발생
4. 소셜로그인 로직이 헤비하긴 함.
[uwsgi 에러 로그 추적]
[무슨 에러가 발생한거야?]
SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) on request
uwsgi_response_writev_headers_and_body_do(): Broken pipe [core/writer.c line 306] during GET
[무슨 뜻이지?]
이 오류는 uWSGI/Django가 응답을 보내기 전에 클라이언트가 연결을 닫았음을 의미합니다.
일반적으로 브라우저 또는 웹 서버 프론트엔드의 시간 초과로 인해 발생합니다.
[왜 이 문제가 생겼을까? (추측)]
1. 로컬서버는 빠름 → 실행하는데 문제가 없었음
2. 배포한 프리티어 서버는 성능이 빠르지 않음
→ 소셜로그인 요청에 대한 처리가 느림 → 응답을 늦게 돌려줌 → 클라이언트가 요청파이프(연결)를 닫아버림
[어떻게 해결하는게 좋을까?]
내가 지금 당장 브라우저의 시간초과를 조절할 방법을 모르니,
프론트엔드 서버쪽이랑 얘기를 해서 연결시간을 조금 늘려달라고 설계를 요청할것.
[프론트 담당자와 통화함]
[프론트 서버] 요청에 async + await 함수설정을 해놓으면 요청에 대한 응답이 오기까지 기다린다고 한다.
희망이 보인다. 프론트 개발이 완료되자마자 실험하자
[위에 방법이 안되면]
클라이언트 한번의 요청에 서버에 3번에 걸쳐서 url이 전달이 되는데
이걸 이렇게 하지말고 1 by 1으로 코드를 수정해보자.
'프로젝트 > 창업 프로젝트 (DRF + AWS)' 카테고리의 다른 글
[점검] 프로젝트 피드백, 단기 목표 설정 (0) | 2022.09.06 |
---|---|
[AWS EC2 배포][ubuntu] 배포하며 쌓은 내실을 정리해 보자 (0) | 2022.08.31 |
[회고][Django][DRF][RestAPI] 아이디어 '캐밋'을 구현하며 (4) | 2022.08.23 |
[JWT 인증] 토큰은 어디에 담겨있나요? (0) | 2022.07.29 |
[아이디어톤][멋쟁이사자처럼] 본선 진출 회고 (2) | 2022.07.26 |