본문 바로가기
반응형

전체보기45

Django ALB unhealthy가 계속 뜬다면 Health checks failed with these codes: [400] ALB를 적용하였는데 Health_check를 실패하는 경우가 있습니다. 그런데 400 에러가 발생을 합니다. 헬스 체크를 위해 django-health-check를 설치 해보았지만 여전히 400 status가 발생하였습니다. 해당 400 호스트 화이트 리스트의 문제 였습니다. EC2의 PrivateIP를 적용하니 해결되었습니다. 참고 블로그 https://lhy.kr/elb-healthcheck-for-django 2021. 10. 13.
Cookie 등록 후에도 axios.post에 403 에러가 계속 뜨는 경우 Django에서 ajax나 axios 와 같은 호출을 하는 경우 흔하게 403 에러를 볼 수 있습니다. 그 이유는 django에서 기본적으로 csrf를 기본적으로 검수하고 있기때문입니다. csrf에 대한 제사한 설명은 아래 블로그에서 자세히 설명하여 링크 걸어둡니다~ CSRF 공격이란? 그리고 CSRF 방어 방법 CSRF 공격(Cross Site Request Forgery)은 웹 어플리케이션 취약점 중 하나로 인터넷 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 itstory.tk 일반적으로 csrf전달할 token을 포함시키는 .js 파일하나 만들어서 import 하는 경우가 대부분입니다. // cookie_csrf.js // us.. 2021. 8. 22.
bulk_create가 id 값을 리턴해 주지 않는다면~? 한번에 대량의 데이터를 저장하거나 업데이트를 해야하는 경우가 많이 있습니다. 그럴때 쉽게 생각해볼 수 있는 방법이 아래와 같은 방법일것입니다 # 아래와 같이 하면 엄청난 성능 저하를 맛 볼 수 있게 됩니다 for data in data_list: models.CartDesign.objects.create( user=self.request.user, order_product=product.id, order_info_id=order_info.id, uuid=data.uuid)) 하지만 엄청난 성능 저하를 경험하게됩니다. for문을 돌면서 N번 만큼 SQL에 쿼리를 날리기 때문입니다. 중간에 롤백이라도 하게 된다면 정말 비효율적이겠죠? 데이터가 적은 수라면 상관 없겠지만 데이터도 많고 사용자도 많다면 엄청난 .. 2021. 7. 24.
asyncio, aiohttp 체험기 일반적으로 프로그램은 동기적으로 동작을 합니다. 동기적이라 하면 하나의 작업이 완료될때까지 다음 작업이 실행되지 않는 것을 의미합니다. 예를들어 주소의 지번, 도로명 주소와 영문 주소를 얻는 API를 동작 시킨다고 가정해보겠습니다. 행정안전부에서 주소 키워드로 검색시 결과를 돌려주는 API를 제공해주는데요 하지만 지번, 도로명 주소 검색 따로 영문 주소 따로 호출해야합니다. 이때 동기적으로 수행을 한다고 했을때 아래와 같이 작성할 수 있습니다. # 간단한 예시 # 시안 성을 위해 불필요한 정보는 제거됨 def address_ko(keyword): print(f"address_ko 시작") url = "https://www.juso.go.kr/addrlink/addrLinkApi.do" data = req.. 2021. 7. 16.
Nginx client intended to send too large body: 서버를 새로 바꾸고나서 갑자기 이미지가 간헐적으로 업로드가 되고 안되고 하는것이였습니다. 그래서 Nginx 로그를 확인해 보았습니다. tail -n 50 /var/log/nginx/error.log 당연한 이야기겠지만 로그를 확인하기위해서는 미리 로그를 기록하는 설정을 해두었어야합니다 . 보통 Nginx를 설치되면 기본적으로 세팅되어있으니 누구나 보실 수 있을것입니다. # nginx.conf http { access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; } 에러 로그를 확인해보니 파일 크기의 문제라는것을 알 수 있습니다. 2021/06/07 09:44:57 [error] 512#512: *573340 client inten.. 2021. 6. 7.
django mysqlclient error # mysqlclient 설치하기전에 미리 설치 sudo apt-get install python3-dev default-libmysqlclient-dev build-essential pip install mysqlclient 2021. 6. 1.
Ubuntu에 pyenv-virtualenv 가상환경 만들기! 이전 포스팅에 pyenv를 설치하는 방법을 알아봤습니다~ Ubuntu에 pyenv 설치하기! 기존에는 Python 3.6 버전으로 system python 하나로 충분했습니다. 그러던중 비동기 'asyncio'를 사용하는 일이 생겼습니다 처음에는 아무 문제없이 잘 돌아간다고 생각했습니다. 그러던중 뜻밖에 에러 install-django.tistory.com 이제 pyenv를 더욱 멋지게 사용하기 위한 pyenv-virtualenv 가상환경을 만드는것입니다. git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv .bashrc eval "$(pyenv virtualenv-init -)" ---------.. 2021. 6. 1.
Ubuntu에 pyenv 설치하기! 기존에는 Python 3.6 버전으로 system python 하나로 충분했습니다. 그러던중 비동기 'asyncio'를 사용하는 일이 생겼습니다 처음에는 아무 문제없이 잘 돌아간다고 생각했습니다. 그러던중 뜻밖에 에러를 만나게 됩니다. if asyncio.run(img_cls.test()) is None: AttributeError: module 'asyncio' has no attribute 'run' 알고보니 'asyncio'에서 run 함수는 python 3.7버전 부터 사용이 가능한것이 였습니다. 뭔가 대체하는것을 찾을까 하다가 이참에 python 3.9로 올려야겠다고 생각했습니다. 최근 3.9부터 dict 에 병합 연산자가 가능해지기도 했고 많은 파이썬 내장(range, tuple, set, f.. 2021. 6. 1.
Django image URL을 통해 model에 저장하기 디자인 에디터 API에게 이미지 결과를 돌려 받는 작업을 하게 되었습니다. 전달해주는 이미지는 임시 파일로 저장되어 일정 시간이 지나면 해당 API에서 사라지는 것이였습니다. 그렇기때문에 URL만 저장하면 소용이 없었고, 이미지를 Django media 서버에 저장해야했습니다. 간단하게 이미지를 메모리에 적재시켰다가 저장하면 될줄 알았습니다. from django.core.files.uploadedfile import InMemoryUploadedFile 제가 몰라서 그런건지 이미지를 가져오는것까지는 순탄하게되었지만 model에는 저장이 되질 않았습니다. 그렇다고 Error를 뱉는것도 아닌 모든게 동작하면서 파일만 존재하지 않았습니다. 그래서 파일로 임시로 저장했다가 다시 업로드하는 방식을 찾다가 쉽고 .. 2021. 5. 18.
우분투 디스크 용량이 가득 찼을때! 서버에 접속을 했는데 저장공간이 처음 94% 가까이 되었습니다. 딱히 간단한 사이트이고 s3와 RDS를 사용하기 때문에 용량을 차지할게 없는데 용량이 늘어났습니다. /tmp 폴더도 정리해보고 static 파일도 정리해봤지만 용량은 거의 줄지 않았습니다. 우선 어디서 어떻게 용량을 차지하는지 확인을 위해 폴더의 용량을 확인했습니다. du -sh * # h = 사람이 보기편하게 용량을 보여주는 명령어 15M sbin 1.3G snap 4.0K srv 0 sys 12M tmp 4.6G usr 1.6G var 가장 눈에 띄는것은 usr폴더 였습니다. cd usr/ du -sh * #다시 조회 163M bin 4.0K games 34M include 686M lib 46M local 14M sbin 215M sh.. 2021. 5. 4.
Django 다수 업데이트할때 bulk_ 활용하기 다수의 데이터를 저장할때, 예를 들어 이렇게 대량의 이미지를 저장한다고 해보겠습니다. # ex len(data_list) = 100개 for count, data in enumerate(data_list): data.img = img[count] data.title = title[count] data.save() 가장 간단하게 생각해보면 이렇게 하는게 가장 쉬운 것 같습니다. 뭐 단 한번 이렇게 한다면 크게 문제될것은 없을 수 있습니다. 뭐 사용자가 이렇게하는게 아니고 관리지만 쓴다던지 그럴때도 간편하게 한번 짤 수 있을것입니다. 하지만 이때 리스트가 100개라면 쿼리는 100개가 발생 하게 됩니다. 많다면 많고 적다면 적을 수 있습니다. 그렇다면 어떻게 해야 효율적으로 짤수 있을까요?? creat_li.. 2021. 1. 3.
새로운 시도를 해보기! 2020년은 코로나 19로 정말 잃어버린 1년을 보낸것 같습니다. 특히 일적으로 많은 변화가 있었던것 같습니다. 그나마 천만 다행인것은 Django를 조금이라도 배워뒀다는게 천만 다행인것 같습니다. 2021년에는 새로운 도전을 할 수 있는 해가 될것 같습니다! 기존에 일하던 산업군에서 불편하다고 느껴지는 부분이지만 시장 규모가 제한적인것 때문인지, 불편의 강도가 사람마다 다른건지, 해결이 되질 않았습니다. 디지털화와 데이터화로 푼다면 풀릴것이라고 생각하여 소규모 외주로 시도를 해봤지만 항상 기술과 자금 때문에 번번히 실패했던것인데 이제는 python과 django를 통해 직접 해결해보고자 시작합니다! MVP(Minimum Viable Product) 버전을 통해 최소한의 사용자들의 반응을 보기 위한 기본.. 2021. 1. 2.
반응형