django
-
Deadlock 유발할 수 있는 Django ORM (feat. InnoDB)💻 프로그래밍/Django 2022. 8. 14. 01:52
안녕하세요! 개발자 Jay 입니다 😄 이번 포스팅에서는 데드락(Deadlock)을 유발할 수 있는 Django ORM과 InnoDB 엔진을 알아보려고 합니다. 예전에 update_or_create()하는데 갑자기 Dead Lock 너는 왜나오냐?! (feat. transaction)라는 포스팅을 업로드 했던적이 있는데, 시간이 좀 지나니까 기억이 좀 안나기도 하고 이번에 다시한번 InnoDB 부터 알아 보려고 합니다. (내용도 조금 빈약했던 것 같습니다 ㅎㅎ) 1. InnoDB란? 이노DB(InnoDB)는 MySQL을 위한 데이터베이스 엔진이며, MySQL AB가 배포하는 모든 바이너리에 내장되어 있다. MySQL과 사용할 수 있는 다른 데이터베이스 엔진에 대한 개선 사항으로 PostgreSQL을 닮은 ..
-
Django App은 어떻게 실행되는 걸까?💻 프로그래밍/Django 2022. 8. 11. 09:38
안녕하세요! 개발자 Jay 입니다! 오늘은 Django App이 어떻게 실행되는지에 대해 알아보려고 합니다! 처음 개발을 시작할때는 runserver 명령어를 치면 "알아서 되는구나"라고 생각했고 라이브 배포시 "uwsgi, gunicorn 같은 wsgi들이 django app과 연결되니까 실행이 되겠지" 정도로 약간 추상적으로 알았던 것 같아요. 그래서 오늘은 한번 전반적으로 디버깅을 해보면서 runserver 명령어가 실행되면 어떻게 django app 실행까지 되는지 확인해보겠습니다. (본 포스팅은 Django 3.2.4 기준으로 작성되었습니다!) 🏃♂️ runserver 먼저 우리는 django app을 실행시킬때 ./manage.py runserver 명령어를 사용합니다. 명령어 자체를 그냥 ..
-
Django ORM 잘 알고 쓰자! 특히 JOIN 할때!💻 프로그래밍/Django 2022. 8. 3. 16:54
안녕하세요! 개발자 Jay입니다~! 최근에 신규 서비스에 소셜 기능 피쳐를 개발했습니다. 플랜에 좋아요, 댓글을 붙이는 기능이었는데 좋아요 개수와, 댓글 개수를 함께 노출해야 하는 요구사항이 있었습니다. 위 이미지처럼 인스타그램의 좋아요 개수를 표시하는 것과 동일한데요, 추가로 댓글의 개수도 노출되는 기능입니다. 자 그러면 모델링과 ORM을 보면서 문제를 설명드리겠습니다. 1. django ORM 간단히 모델 관계를 보여드리면 이렇습니다 (세부 필드 제거) 되게 간단합니다. Plan, Account가 PlanComment(댓글), PlanLike(좋아요)에 manyTomany로 연결되어 있는 형태입니다. 요구사항에 맞게 쿼리셋을 가져올 때 댓글, 좋아요 개수를 가져오도록 ORM을 작성했습니다. annot..
-
왜 Django는 여러개의 프로세스로 실행하는거지? (feat. libuv, ASGI)카테고리 없음 2022. 3. 27. 21:25
안녕하세요! Jay 입니다! 오늘은 제가 업무에서 Django를 주로 쓰다가 FastAPI, Nest.js를 접하면서 생겼던 궁금증에 대해서 정리해보려고 합니다! Django 개발을 하는 분들은 다 아시겠지만 runserver로 서비스를 실행시켜서 production 환경에서 사용하지 않습니다! Django 공식문서에도 나와있지만 runserver로 production 환경에서 서빙할 경우 보안에 문제가 있을 수 있다고 합니다. 그래서 Nginx 같은 웹서버와 wsgi를 함께 사용하라고 합니다! 더불어 서비스를 배포할 때 python wsgi 중 gunicorn, uwsgi 등 을 사용하면서 여러 개의 워커(worker)들을 띄워서 클라이언트 요청들을 처리를 합니다. 여태까지는 그냥 아 python이 싱..
-
[토이프로젝트 썰] 나의 개발자 랭킹은?! OPGC 에서 확인해보세요!🎁 토이 프로젝트 2021. 7. 20. 05:12
안녕하세요! 운동하는 개발자 Jay 입니다! 오늘은 프론트엔드 개발자 친구와 함께 반년 정도😅 함께 만든 서비스를 공개하려고 합니다! 사실 이렇게 오래 걸릴 정도의 규모와 서비스는 아니었지만, 이게 혼자 하는 게 아니다 보니 각자 사정과 본업 때문에 굉장히 늘어지게 되었던 것 같습니다! 그리고 그와중에 욕심도 생겨서 "좀만 더 추가해보자", "이것까지만 해보자" 하고 미루고 미루다가 드디어 공개를 하게 되었네요 ㅎㅎ 완벽해서 공개하는 건 아니고 이러다가 1년이 지날 것 같아서 피드백도 받을 겸, 그리고 실제로 운영해보면서 develop 시켜보려고 합니다! 자, 그럼 저와, 친구가 만든 서비스를 공개합니다! 1. 서비스 소개 🥳 저희 서비스는 OPGC(Over Programmed Good Coding) 라..
-
비동기로 Third-party API 처리하기 (feat. aiohttp, asyncio)💻 프로그래밍/Python 2021. 4. 7. 16:13
안녕하세요! 운동하는 개발자 제이입니다! 오늘은 비동기로 Third-party API를 처리하는 방법, 그리고 제가 왜 비동기를 사용했는지에 대한 과정을 설명해보겠습니다. 제가 비동기에 관심을 갖게 된 이유는 현재 개발 중인 토이 프로젝트에서 Github API를 호출하기 때문입니다. 근데 단순히 1번 호출해서 사용하는 게 아니라 Github 사용자에 따라 10번 일수도 100번 일수도 있습니다. 현재 개발 중인 토이 프로젝트는 등록한 Github 유저의 정보를 가지고 API를 호출해서 정보를 보여주는 서비스입니다. 여기에 DB에 read, write 등의 작업들을 하게 되면 엄청난 시간이 걸리게 됩니다. 지금까지 가장 오래 걸리는 user의 경우 43초 정도가 걸렸네요... 코드와 실행결과를 보면서 좀..
-
Redis로 Cache Server를 만들어 보자! (feat. django-cacheops)💻 프로그래밍/Django 2021. 2. 18. 07:28
안녕하세요! 운동하는 개발자 Jay입니다 😄 오늘은 이름하여 c.a.c.h.e 를 Django에서 사용해보려고 합니다. 지금 진행 중인 토이 프로젝트가 있는데, 이 프로젝트에서 캐시를 써보려고 해요! 캐시란 무엇이고 왜 사용하는지를 하나씩 알아가 보겠습니다! 1. What is Cache? 💰 (Cache is Cash.... 는 드립) 캐시(Cache)란 자주사용하는 데이터를 미리 복사해 놓은 저장소를 말합니다. 쉽게 설명하자면 내 키(key와 키를 이용해 뒤에서 설명까지 이어지기 위한 라임 this is 언어유희) 를 알고 싶은데, 매번 키를 재는 게 아닌 처음 재논 키의 정보를 저장해놔서 원할 때마다 그 정보를 보는 게 캐시입니다. 좀 더 Django와 연관 지어서 설명해보겠습니다. Django에서..
-
Django, Nginx CORS 설정💻 프로그래밍/Django 2021. 1. 17. 21:51
친구와 토이프로젝트를 진행하던 도중 CORS문제를 만났다. Web에서 서버로 API를 호출했는데 아래와 같은 오류를 만났다. Access to XMLHttpRequest at '{target url}' from origin '{current url}' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. 아마 웹개발을 하는 사람들이라면 종종 마주친 오류였을 것이다. 간단히 말하자면 CORS 정책을 지키지 않았기 때문에 api호출이 금지 되었다는 것이다. 오류를 보면 Access-Control-Allow-Origin 가 헤더에 업기 때문에 CORS 정책에 의해 B..