2024/10 3

Django - DB Connection

db 서버와 클라이언트(서버 애플리케이션) 과는 서로 쿼리를 날리고, 데이터를 조회하며 통신합니다.통신하기 위해서는 서로 연결이 되어야 하는데, db가 통신하는 방식은 tcp 프로토콜을 사용해서 통신합니다. 이 과정에서 3 way handshak가 필요한데 이 모든 과정을 쿼리를 날릴 때마다 하는 건 매우 비효율적입니다. 그래서 db 커넥션을 관리를 해야 할 필요가 있습니다. 이번 글에선 디비 커넥션을 관리하는 방식을 알아보고 장고에선 어떤 방식으로 처리하는지 알아보겠습니다. 1. DB Connection Pool커넥션 풀은 애플리케이션이 시작되는 시점에 커넥션을 충분히 만들어 둡니다.애플리케이션은 커넥션이 필요할때마다 커넥션 풀에서 커넥션을 요청하고 커넥션 풀이 전달해 준 커넥션을 사용해서 db와 통신..

django 2024.10.27

Django core - WSGI

1. WSGI서버에 요청이 들어오면 nginx나 apache와 같은 웹 서버들은 애플리케이션을 호출해야 합니다.하지만 보통의 웹 서버들은 애플리케이션을 이해하고 호출하는 기능이 없기 때문에 중간에 중개해 주는 무엇이 필요합니다.WSGI는 pep 333을 기반으로 만들어진 웹 서버와 파이썬 애플리케이션을 하나의 체인으로 연결해 통신하게 하는 인터페이스입니다.먼저 클라이언트에서 온 요청이 웹 서버가 받고, 그 요청을 WSGI에 전달합니다. 서버단에서 작업이 필요한 경우에는 WSGI가 애플리케이션에 요청을 전송하고 애플리케이션에서 로직이 처리된 후에 WSGI middleware을 통해 응답됩니다. 2. WSGI middlewareWSGI middleware은 WSGI를 사용한 구현체입니다.미들웨어가 직접적으로..

django 2024.10.21

Python list append, extend, +=

파이썬에 배열에 값을 추가하는 방법은 append, extend, +=, insert 등등이 있습니다.그 중 append, extende, +=의 차이점을 알아보겠습니다.1. append, +=>>> a = [1, 2, 3]>>> b = [4, 5, 6]>>> a.append(b)>>> print(a)[1, 2, 3, [4, 5, 6]]append를 사용할 시 그 자체를 배열에 원소로 넣습니다.+= 연산자를 사용해도 append와 같은 방식으로 동작합니다.무엇을 넣든 원소 하나로 들어가는 특징이 있습니다. 2. extend>>> a = [1, 2, 3]>>> b = [4, 5, 6]>>> a.extend(b)>>> print(a)[1, 2, 3, 4, 5, 6]extend를 사용하면 배열에 iterabl..

python 2024.10.07