오랜만에 TIL을 작성해 봅시다
https://docs.python.org/3/library/index.html
The Python Standard Library
While The Python Language Reference describes the exact syntax and semantics of the Python language, this library reference manual describes the standard library that is distributed with Python. It...
docs.python.org
파이썬에 기초부터 찾아보는 방법을 배웠습니다.
https://docs.python.org/3/library/functions.html
Built-in Functions
The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...
docs.python.org

이건 파이썬에 기본적으로 내장이 되어있는 함수로 import를 할 필요 없이 언제든지 코드를 작성하면 함께 동작을 할 수 있습니다.
랜덤함수, 계산 함수같은 경우에 파이썬 설치에 함께 설치가 되어 있지만 항상 함께 실행을 한다면 속도 저하가 일어나기에 필요한 부분만 가져와서 사용할 수 있는 import를 이용하여 사용할 수 있도록 합니다.
파이썬을 배웠지만 오늘 재대로 알게 된 부분으로는 메소드가 있는데. 우리가 흔히 사용하는 int.str,bool같은 데이터 타입에 또한 함수로 정의가 되어 있으며, 해당 함수에는 메소드가 있어 list의 경우에는 .remove / str의 경우에는 upper같이 기본적으로 사용해 봤던 것들이 메소드의 기능이였습니다.

여기를 보면 확인 할 수 있습니다.
버전이 업그레이드 되면서 새롭게 생겨나는 메소드도 있으니 이런 부분을 확인해서 만들수 있다고 생각이 됩니다.
장고도 처음부터 알아봅시다.
1. 장고 설치
python -m django --version
장고를 설치하는 것 인데 pip를 써도 됩니다.
설치가 완료가 되었다면 현재 있는 폴더에 프로젝트파일을 만들어야 합니다.
django-admin startproject {내프로젝트명}

파일은 위의 형식대로 생성이 되며 기본적인 장고의 설정은 settings.py를 이용하여 설정을 할 수 있습니다.
python manage.py runserver
장고 파일을 실행 하기 위해서는 해당 명령어로 실행을 할 수 있습니다.
ASGI : ASGI(Asynchronous Server Gateway Interface)는 Python 웹 프레임워크에서 비동기 웹 서버와 애플리케이션 간의 상호 작용을 정의하는 표준 인터페이스입니다. 기존의 WSGI(Web Server Gateway Interface)에서 확장되어, 비동기 처리를 지원하도록 설계되었습니다.
장점:
- 비동기 처리: ASGI는 비동기적이므로, 웹소켓, 서버 이벤트, 장기 실행 요청 등 실시간 통신이나 고성능 비동기 처리가 필요한 애플리케이션에 적합합니다.
- 높은 동시성: 비동기 처리 덕분에 ASGI 기반 애플리케이션은 동시에 많은 요청을 더 효율적으로 처리할 수 있어, 더 높은 동시성을 지원합니다.
- 유연성: HTTP뿐만 아니라 웹소켓과 같은 다양한 프로토콜을 지원하며, 동기적 코드를 그대로 사용할 수도 있습니다. 따라서 비동기와 동기 코드를 혼합하여 사용할 수 있습니다.
- 미래 지향성: FastAPI, Starlette 같은 현대적인 프레임워크는 ASGI 기반으로 작동하여 빠르고 효율적인 웹 애플리케이션 개발이 가능합니다.
단점:
- 복잡성: 비동기 코드는 동기 코드보다 복잡하고 디버깅이 어려울 수 있습니다. 개발자가 비동기 처리 패턴에 익숙하지 않다면 코드 관리가 까다로울 수 있습니다.
- 호환성 문제: 일부 기존 WSGI 기반 애플리케이션 또는 라이브러리는 ASGI와 호환되지 않거나 추가 설정이 필요할 수 있습니다.
- 안정성 부족: WSGI처럼 오랜 기간 검증된 것이 아니기 때문에, 일부 안정성 측면에서는 아직 WSGI에 비해 미흡할 수 있습니다. 그러나 빠르게 발전하고 있는 추세입니다.
WSGI : Python 웹 애플리케이션과 웹 서버 간의 표준 인터페이스로, Python 기반의 웹 프레임워크와 서버가 서로 통신할 수 있게 해주는 일종의 규약입니다. WSGI는 PEP 3333에 정의되어 있으며, 동기 방식으로 작동합니다.
장점:
- 안정성: WSGI는 수년간 사용된 안정적인 표준입니다. 많은 웹 프레임워크(예: Django, Flask)가 기본적으로 WSGI 기반으로 개발되었습니다.
- 단순성: 동기적 처리 방식을 사용하므로 코드의 복잡도가 낮고, 작성 및 디버깅이 용이합니다. 요청-응답 흐름이 순차적이기 때문에 쉽게 이해할 수 있습니다.
- 폭넓은 지원: 다양한 WSGI 서버(예: Gunicorn, uWSGI) 및 호스팅 서비스에서 광범위하게 지원됩니다.
단점:
- 동시성 한계: WSGI는 동기적이므로, 동시에 많은 요청을 처리할 때 성능이 떨어집니다. 특히 I/O가 많은 작업이나 실시간 데이터 스트리밍 같은 애플리케이션에 비효율적입니다.
- 비동기 지원 불가: WSGI는 비동기 작업을 지원하지 않기 때문에, 웹소켓이나 장기 실행 요청, 비동기 API 호출 같은 작업에 적합하지 않습니다.
- 확장성 제한: 높은 동시 요청 처리 능력이 요구되는 대규모 시스템에서는 WSGI 서버의 확장성에 한계가 있을 수 있습니다.
WSGI의 기본 동작 흐름
- 웹 서버가 클라이언트 요청을 받음:
- 사용자가 브라우저에서 URL을 입력하거나 HTTP 요청을 보내면, 그 요청은 먼저 WSGI 서버(예: Gunicorn, uWSGI)가 받습니다.
- WSGI 서버가 애플리케이션에 요청 전달:
- WSGI 서버는 HTTP 요청을 처리하기 위해 Python 웹 애플리케이션에 전달해야 합니다. 이를 위해 WSGI는 environ과 start_response라는 두 가지 매개변수를 사용하여 웹 애플리케이션을 호출합니다.
- environ: 요청과 관련된 환경 변수(HTTP 메서드, 경로, 헤더 등)가 담긴 딕셔너리입니다.
- start_response: 응답 상태 코드와 헤더를 설정하는 함수입니다.
- WSGI 애플리케이션이 요청 처리:
- WSGI 애플리케이션(웹 프레임워크)은 environ을 통해 받은 요청 데이터를 사용하여 요청을 처리합니다. 예를 들어, 데이터베이스 쿼리를 실행하거나, 사용자가 요청한 HTML 페이지를 생성합니다.
- 이 과정에서 WSGI 애플리케이션은 start_response 함수를 호출해 HTTP 상태 코드와 응답 헤더를 설정합니다.
- WSGI 애플리케이션이 응답 반환:
- WSGI 애플리케이션은 start_response를 호출한 후, 응답 본문을 반환합니다. 이 본문은 iterable(반복 가능한 객체, 보통 리스트나 제너레이터) 형태로 반환되어야 하며, 웹 서버는 이를 클라이언트에 전달합니다.
- WSGI 서버가 클라이언트에 응답 전달:
- WSGI 서버는 애플리케이션이 반환한 응답 데이터를 받아 HTTP 응답으로 변환하고, 최종적으로 클라이언트(브라우저)에게 응답을 전송합니다.
environ예시
{
'REQUEST_METHOD': 'GET',
'PATH_INFO': '/hello',
'QUERY_STRING': 'name=John',
'CONTENT_TYPE': 'text/html',
'SERVER_NAME': 'localhost',
'SERVER_PORT': '8000',
...
}
start_response 예시
start_response('200 OK', [('Content-Type', 'text/plain')])
'코딩 교육 TIL' 카테고리의 다른 글
2024-10-10 QA TIL (6) | 2024.10.10 |
---|---|
2024-09-24 TIL (5) | 2024.09.24 |
2024-06-14 AI 코딩 TIL (0) | 2024.06.14 |
2024-06-13 AI 코딩 TIL (0) | 2024.06.13 |
2024-06-12 AI 코딩 TIL (0) | 2024.06.12 |
오랜만에 TIL을 작성해 봅시다
https://docs.python.org/3/library/index.html
The Python Standard Library
While The Python Language Reference describes the exact syntax and semantics of the Python language, this library reference manual describes the standard library that is distributed with Python. It...
docs.python.org
파이썬에 기초부터 찾아보는 방법을 배웠습니다.
https://docs.python.org/3/library/functions.html
Built-in Functions
The Python interpreter has a number of functions and types built into it that are always available. They are listed here in alphabetical order.,,,, Built-in Functions,,, A, abs(), aiter(), all(), a...
docs.python.org

이건 파이썬에 기본적으로 내장이 되어있는 함수로 import를 할 필요 없이 언제든지 코드를 작성하면 함께 동작을 할 수 있습니다.
랜덤함수, 계산 함수같은 경우에 파이썬 설치에 함께 설치가 되어 있지만 항상 함께 실행을 한다면 속도 저하가 일어나기에 필요한 부분만 가져와서 사용할 수 있는 import를 이용하여 사용할 수 있도록 합니다.
파이썬을 배웠지만 오늘 재대로 알게 된 부분으로는 메소드가 있는데. 우리가 흔히 사용하는 int.str,bool같은 데이터 타입에 또한 함수로 정의가 되어 있으며, 해당 함수에는 메소드가 있어 list의 경우에는 .remove / str의 경우에는 upper같이 기본적으로 사용해 봤던 것들이 메소드의 기능이였습니다.

여기를 보면 확인 할 수 있습니다.
버전이 업그레이드 되면서 새롭게 생겨나는 메소드도 있으니 이런 부분을 확인해서 만들수 있다고 생각이 됩니다.
장고도 처음부터 알아봅시다.
1. 장고 설치
python -m django --version
장고를 설치하는 것 인데 pip를 써도 됩니다.
설치가 완료가 되었다면 현재 있는 폴더에 프로젝트파일을 만들어야 합니다.
django-admin startproject {내프로젝트명}

파일은 위의 형식대로 생성이 되며 기본적인 장고의 설정은 settings.py를 이용하여 설정을 할 수 있습니다.
python manage.py runserver
장고 파일을 실행 하기 위해서는 해당 명령어로 실행을 할 수 있습니다.
ASGI : ASGI(Asynchronous Server Gateway Interface)는 Python 웹 프레임워크에서 비동기 웹 서버와 애플리케이션 간의 상호 작용을 정의하는 표준 인터페이스입니다. 기존의 WSGI(Web Server Gateway Interface)에서 확장되어, 비동기 처리를 지원하도록 설계되었습니다.
장점:
- 비동기 처리: ASGI는 비동기적이므로, 웹소켓, 서버 이벤트, 장기 실행 요청 등 실시간 통신이나 고성능 비동기 처리가 필요한 애플리케이션에 적합합니다.
- 높은 동시성: 비동기 처리 덕분에 ASGI 기반 애플리케이션은 동시에 많은 요청을 더 효율적으로 처리할 수 있어, 더 높은 동시성을 지원합니다.
- 유연성: HTTP뿐만 아니라 웹소켓과 같은 다양한 프로토콜을 지원하며, 동기적 코드를 그대로 사용할 수도 있습니다. 따라서 비동기와 동기 코드를 혼합하여 사용할 수 있습니다.
- 미래 지향성: FastAPI, Starlette 같은 현대적인 프레임워크는 ASGI 기반으로 작동하여 빠르고 효율적인 웹 애플리케이션 개발이 가능합니다.
단점:
- 복잡성: 비동기 코드는 동기 코드보다 복잡하고 디버깅이 어려울 수 있습니다. 개발자가 비동기 처리 패턴에 익숙하지 않다면 코드 관리가 까다로울 수 있습니다.
- 호환성 문제: 일부 기존 WSGI 기반 애플리케이션 또는 라이브러리는 ASGI와 호환되지 않거나 추가 설정이 필요할 수 있습니다.
- 안정성 부족: WSGI처럼 오랜 기간 검증된 것이 아니기 때문에, 일부 안정성 측면에서는 아직 WSGI에 비해 미흡할 수 있습니다. 그러나 빠르게 발전하고 있는 추세입니다.
WSGI : Python 웹 애플리케이션과 웹 서버 간의 표준 인터페이스로, Python 기반의 웹 프레임워크와 서버가 서로 통신할 수 있게 해주는 일종의 규약입니다. WSGI는 PEP 3333에 정의되어 있으며, 동기 방식으로 작동합니다.
장점:
- 안정성: WSGI는 수년간 사용된 안정적인 표준입니다. 많은 웹 프레임워크(예: Django, Flask)가 기본적으로 WSGI 기반으로 개발되었습니다.
- 단순성: 동기적 처리 방식을 사용하므로 코드의 복잡도가 낮고, 작성 및 디버깅이 용이합니다. 요청-응답 흐름이 순차적이기 때문에 쉽게 이해할 수 있습니다.
- 폭넓은 지원: 다양한 WSGI 서버(예: Gunicorn, uWSGI) 및 호스팅 서비스에서 광범위하게 지원됩니다.
단점:
- 동시성 한계: WSGI는 동기적이므로, 동시에 많은 요청을 처리할 때 성능이 떨어집니다. 특히 I/O가 많은 작업이나 실시간 데이터 스트리밍 같은 애플리케이션에 비효율적입니다.
- 비동기 지원 불가: WSGI는 비동기 작업을 지원하지 않기 때문에, 웹소켓이나 장기 실행 요청, 비동기 API 호출 같은 작업에 적합하지 않습니다.
- 확장성 제한: 높은 동시 요청 처리 능력이 요구되는 대규모 시스템에서는 WSGI 서버의 확장성에 한계가 있을 수 있습니다.
WSGI의 기본 동작 흐름
- 웹 서버가 클라이언트 요청을 받음:
- 사용자가 브라우저에서 URL을 입력하거나 HTTP 요청을 보내면, 그 요청은 먼저 WSGI 서버(예: Gunicorn, uWSGI)가 받습니다.
- WSGI 서버가 애플리케이션에 요청 전달:
- WSGI 서버는 HTTP 요청을 처리하기 위해 Python 웹 애플리케이션에 전달해야 합니다. 이를 위해 WSGI는 environ과 start_response라는 두 가지 매개변수를 사용하여 웹 애플리케이션을 호출합니다.
- environ: 요청과 관련된 환경 변수(HTTP 메서드, 경로, 헤더 등)가 담긴 딕셔너리입니다.
- start_response: 응답 상태 코드와 헤더를 설정하는 함수입니다.
- WSGI 애플리케이션이 요청 처리:
- WSGI 애플리케이션(웹 프레임워크)은 environ을 통해 받은 요청 데이터를 사용하여 요청을 처리합니다. 예를 들어, 데이터베이스 쿼리를 실행하거나, 사용자가 요청한 HTML 페이지를 생성합니다.
- 이 과정에서 WSGI 애플리케이션은 start_response 함수를 호출해 HTTP 상태 코드와 응답 헤더를 설정합니다.
- WSGI 애플리케이션이 응답 반환:
- WSGI 애플리케이션은 start_response를 호출한 후, 응답 본문을 반환합니다. 이 본문은 iterable(반복 가능한 객체, 보통 리스트나 제너레이터) 형태로 반환되어야 하며, 웹 서버는 이를 클라이언트에 전달합니다.
- WSGI 서버가 클라이언트에 응답 전달:
- WSGI 서버는 애플리케이션이 반환한 응답 데이터를 받아 HTTP 응답으로 변환하고, 최종적으로 클라이언트(브라우저)에게 응답을 전송합니다.
environ예시
{
'REQUEST_METHOD': 'GET',
'PATH_INFO': '/hello',
'QUERY_STRING': 'name=John',
'CONTENT_TYPE': 'text/html',
'SERVER_NAME': 'localhost',
'SERVER_PORT': '8000',
...
}
start_response 예시
start_response('200 OK', [('Content-Type', 'text/plain')])
'코딩 교육 TIL' 카테고리의 다른 글
2024-10-10 QA TIL (6) | 2024.10.10 |
---|---|
2024-09-24 TIL (5) | 2024.09.24 |
2024-06-14 AI 코딩 TIL (0) | 2024.06.14 |
2024-06-13 AI 코딩 TIL (0) | 2024.06.13 |
2024-06-12 AI 코딩 TIL (0) | 2024.06.12 |