본문 바로가기

728x90

Development/Django

(14)
[Django] User Model 확장 (1) - 4가지 방법 한국에서는 User Model을 확장한다고 하지만, 공식 문서에서는 Customizing 한다고 합니다. User 모델을 확장하는 기법에는 4가지가 있습니다. 프록시 모델 사용하기 User Model과 일대일 관계의 프로필 데이터 추가하기 AbstractUser 모델 상속한 사용자 정의 User 모델 사용하기 AbstractBaseUser 모델 상속한 사용자 정의 User 모델 사용하기
[Django] Web Socket Django에서 Client와 Server 간 통신 절차는 다음과 같습니다. Client가 Server에 HTTP request를 보냅니다. Django는 request를 분석하여 url를 view에 매칭시킵니다. View가 request를 수행해 Server가 Client에 response를 보냅니다. HTTP에서 꼼수를 사용해 실시간처럼 보이게 할 수 있다. Client에서 Server로 request를 보내 event를 받거나(Pooling), Client에서 계속 request를 보내고 필요한 event가 있을 때에만 response를 보내는 방식(Streaming)입니다. HTTP와 다르게, Web Socket Protocol은 양방향 커뮤니케이션(bi-directional communicati..
[Django] URL 패턴 - 정규식과 path() 차이점 Django version 2.0 이전에는 URL 패턴을 지정하기 위해서 정규표현식을 사용한 django.conf.urls.url() 함수를 사용했습니다. Django version 2.0 에서부터는 URL 패턴을 보다 간결하고 단순하게 표현하기 위해 django.urls.path()를 사용하고 있습니다. Django 2.0 이상의 버전에서는 일반적인 URL 패턴은 path() 함수를 사용하고, 복잡한 패턴의 경우 django.urls.re_path() 함수를 사용합니다.
[Django] Channels & Daphne Django와 Web Server가 주고 받기 위해서는 WSGI 프로토콜을 사용합니다. Django Channels를 배포하기 위해서는 HTTP 요청은 uWSGI 프로토콜로 받고, WS(Web Socket) 요청은 ASGI 프로토콜로 받아야 합니다. 즉, HTTP 요청 뿐만 아니라, WS 요청도 처리해야 합니다. 더보기 ASGI(Asynchronous Server Gateway Interface)란? Web Server와 Django, 애플리케이션을 비동기로 연결해주는 Python의 표준 인터페이스라고 보면 된다. 여러 프로토콜( HTTP, HTTP/2, WebSocket 포함 ) 스타일을 처리 할 수 있다. ASGI(Asynchronous Server Gateway Interface)란? Web Ser..
[Django] Gunicorn - Threads Gunicorn은 평소에 쓰던 WSGI( Web Server Gateway Interface )이다. WSGI의 종류에는 uWSGI, Gunicorn 등등 많지만, 그 중에서도 가볍고 더 빠른 gunicorn을 사용하게 되었다. Procfile에 쓰여져 있는 프로세스 Gunicorn 명령어에서 못 보던 옵션을 보았다. 바로 --threads 이다. blog.winterjung.dev/2018/04/08/flask-concurrency-test gunicorn으로 flask에서 동시에 여러 요청 처리 flask 앱 내부적으로 blocking 작업이 있다고 할 때, A 클라이언트가 해당 API를 호출하면 B 클라이언트 요청은 A의 요청이 다 처리될 때 까지 기다린 후에야 처리되기 시작한다. 때문에 외부 AP..
[Django] WSGI (Web Server Gateway Interface ) WSGI (Web Server Gateway Interface) 는 Callable Object를 통해 Web Server가 요청에 대한 정보를 Application에 전달한다. 더보기 Callable Object란? A callable object, in computer programming, is any object that can be called like a function 컴퓨터 프로그래밍에서, callable object란 함수처럼 호출될 수 있는 객체를 말합니다. Python에서는 간단히 다음처럼 표현할 수 있다. """ - class를 생성했으나, 내부에 __init__는 없고 __call__만 있음 - 객체로 표현했으나, 실제는 함수처럼 사용되는 경우, 이러한 경우를 callable ob..

728x90