본문 바로가기

Django

(21)
django + celery + RabbitMQ 적용해서 비동기 task queuing하기. Django로 웹 서비스를 개발하다보면, 백엔드(Backend)에서 어떤 프로세싱을 해야할 일이 생길것이다. 예를들면 업로드된 영상을 처리한다던지, 어떤 결제나 승인을 대기한다던지등등.. 이런 작업을 처리하기 위한 시스템을 만들기 위해서 Celery라는 분산 메세지 패싱기반 비동기 태스크 큐(Queue)를 사용하면 좋다. 나도 처음 써봤는데.. 아직 전체 구조가 확실히 눈에 들어오지는 않지만, 간단한 예제를 돌려보니 대충 감은 온다. 구글링을 해보면 참 설명이 많이 나오는데.. 이게 Celery 버젼에 따라 설정방법이 바뀐것도 있고해서.. 몇번 시도하다가 에러만 계속 나길래.. 이것저것 건들여보다가 정상동작 하는것을 확인하고 블로그에 기록을 해둔다. 1. Celery 3.0 설치 웹사이트 : http:/..
django 1.5를 KT ucloud 서버에 올리기 * https://ucloudbiz.olleh.com/ 위 사이트를 방문하면 KT에서 제공하는 ucloud서비스를 1년간 무상으로 사용해 볼 수 있다. 실제로 어떤 서비스를 하기에는 부족하지만, 개발버젼으로 실제 서비스에 올리기전에 테스트를 해볼 수 있을 정도는 될듯하다. Django에서 보통 개발을 할때 처음부터 apache 서버를 이용하지는 않을것이다. 이미 내부에 http 서버가 내장되어 있기때문에, 간단한 명령하나로 localhost에서 테스트는 이루어 진다. 하지만, 실제로 서비스를 그대로 올려서 사용하지는 않을것이다. 사용하는 database에 맞게 설정을 변경 하거나, 보안 관련 설정 및 성능 테스트에따라 추가 패키지 설치나 연동이 필요할 것이기 때문이다. 일단 개발이 완료된 django 서..
django 로그인 함수 django 프레임워크를 사용할때, 레퍼런스를 잘 봐야 할 것같다.일단 사용하는 eclipse에서 intellisense(?)가 잘 안되서.. 인자에 대한 속성을 한눈에 판단하기가 어려워서... 일단 django.contrib.auth.views 에 login 함수 def login(request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=AuthenticationForm, current_app=None, extra_context=None): """ Displays the login form and handles the login action. """
django 1.5에서 메일로 가입 activation 처리하기. 웹 사이트에 가입시 사용자 등록을 하는 것 만으로 가입을 바로 하는것이 아니라, 가입시에 등록한 이메일로 activation을 최종 체크해야 등록하게 하는 방법을 설명하려고 한다. 이런 방법을 사용하는 이유는 실제 사용 가입자임을 가려내기 위한것이고, email주소를 id로 사용하는 것과 유사한 효과를 낸다. email을 id로 사용하면 그 자체가 고유 id로 작용하는 장점이 있지만, 어짜피 email로 activation 확인을 받아서 최종적으로 실제 사용할 사람인지를 구분한다는 점에서.. 굳이 id로 email주소를 사용하는 것보다 개별적인 id 이름을 허용하되 email activation으로 체크하면 될 것라 생각한다. 물론, email 주소를 고유 id로 사용하면 a@test.com과 a@exa..
django에서 email로 registration 하기. 참고 URL : https://github.com/bitmazk/django-registration-email django에서는 default가 username이 primary 값이라, username을 기준으로 등록된다.(동일한 username이 존재하지 않는다.) 하지만 email로 바꾸고 싶다면..위 사이트에서 소스를 다운받아 설치하면 된다. 사용법도 어렵지 않다. 사용방법 (1) 패키지를 설치한다. pip install -e git://github.com/bitmazk/django-registration-email#egg=registration_email (2) app를 등록한다. INSTALLED_APPS = [ # all your other apps 'registration', 'registr..
django에서 email를 사용자 id로 사용하고 싶을때.. Django에서는 User라는 객체가 있는데, user email이 아닌 username이 unique한 값으로 설정되어 있다. 즉, 메일주소는 동일한값이 존재하는 것은 허용하지만, username은 중복되는 것은 허용하지 않는다. 그런데, 요즘은 username으로 가입 id를 받는것보다 email주소를 user id로 받는 경우가 많다. 그러면 어떻게 해야할까.. 아래 사이트에서 Custom user model을 다운받아서 설치하면 된다. 참고로 django 1.5버젼 이상에서만 테스트된것 같다.django-custom-user는 django의 기본적인 User객체와 동일하지만, username 대신에 email을 사용한다는 차이 뿐이다. https://pypi.python.org/pypi/djang..
Django 과연 scale적인 면에서 괜찮은 선택인가. Django의 메인 페이지에 방문해보면 인기있는 웹 서비스 사이트가 올라와있다. Instagram, Openstack, Pinterest.. 서비스 내용만봐도 적지않은 트래픽과 사용자들을 가지고 있을것이라 생각된다. 아래 웹 사이트를 가보면 http://www.djangosites.org/ Django로 개발된 웹사이트들에 대한 정보가 올라와있다. 현재 4299개의 웹사이트가 Django를 기반으로 개발되어져 있단다.Deployment 통계자료를 보면, 사용하는 데이터베이스 백엔드로 mysql이 절반이상을 차지하고 있고, postgres가 두번째.. 88%가 이 두가지 데이터베이스를 활용하고 있다. 웹 서버는 쉽게 예상할 수 있듯이 아파치가 압도적이고, nginx라는 웹서버도 많이 사용하는 편이다.(23..
Django userena의 simplified 버젼 django의 user account 부분을 담당할 userena를 설치하고 사용하는데에 있어서, 몇가지 불편함이나 무거운 감이 있어서 수정된 버젼을 만들어서 배포하고 있다. github : https://github.com/barszczmm/django-easy-userena django userena의 simplify된 버젼. 현재 공식 문서는 없다. userena의 base template에서는 title, content, content-title 블럭을 필요로 하기 때문에 보통 이 템플릿을 매번 overwrite해서 사용해야 하는 불편함과 django-guardian 퍼미션을 허용해 줘야하는 불편함때문에, 아예 그 부분을 제거하였다고 한다. 그리고 django-guardian을 사용하면 데이터베이..