키 테이크 아웃
WSGI 또는 웹 서버 게이트웨이 인터페이스는 모든 Python 웹 프레임 워크를 밑줄로하여 다른 웹 서버와 애플리케이션 프레임 워크 간의 상호 작용을 허용하는 웹 서버에 공통 사양을 제공합니다.
WSGI 응용 프로그램은 두 가지 인수, Environ (요청 데이터가 포함 된 Python Dict)과 START_FN (호출 가능)의 두 가지 인수를 수락 해야하는 파이썬 호출 가능입니다. 응용 프로그램은 상태 코드와 헤더 목록의 두 인수와 함께 start_fn을 호출하고 응답 본문에 바이트를 포함하는 반복 가능한 것을 반환해야합니다.
미들웨어는 미들웨어와 핸들러가 서로를 알거나 돌볼 필요가없는 WSGI 앱의 기능을 확장하는 데 사용될 수 있습니다. 이렇게하면 로깅 또는 오류 처리와 같은 기능을 쉽게 추가 할 수 있습니다.
WSGI 앱은 다양한 방식으로 제공 될 수 있으며 Gunicorn과 UWSGI는 두 가지 인기있는 옵션입니다. 정적 자산을 제공하기 위해 Nginx와 같은 것을 설정하는 것이 좋습니다.
아래에는 Django, Flask, Bottle 및 기타 모든 Python Web Framework 아래에는 Web Server Gateway 인터페이스 또는 WSGI가 있습니다. WSGI는 다른 웹 서버와 응용 프로그램 프레임 워크가 공통 API를 기반으로 상호 작용할 수있는 웹 서버의 공통 사양 인 Java에 대한 서블릿을 Python에 사용하는 것입니다. 그러나 대부분의 것들과 마찬가지로 파이썬 버전은 상당히 단순합니다. -
WSGI는 PEP 3333에 정의되어 있습니다.이 빠른 소개 후 더 많은 정보를 원할 경우 참조로 읽어 보시기 바랍니다.
이 기사는 응용 프로그램 개발자의 관점에서 WSGI 사양을 소개하고 WSGI와 직접 작업하여 응용 프로그램을 작성하는 방법을 보여줍니다 (원하는 경우).
첫 번째 wsgi 앱
가장 기본적인 파이썬 웹 앱은 다음과 같습니다
-
그게 다야! 전체 파일. app.py를 호출하고 WSGI 호환 서버로 실행하면 200 상태의 Hello World 응답이 나타납니다. 이를 위해 Gunicorn을 사용할 수 있습니다. PIP (PIP 설치 Gunicorn)를 통해 설치하고 Gunicorn App : App로 실행하십시오. 이 명령은 Gunicorn에게 앱 모듈의 앱 변수에서 WSGI 호출을 할 수 있도록합니다.
지금, 당신은 꽤 흥분해야합니다. 실행중인 애플리케이션을 위해 단 3 줄? 그것은 일종의 기록이어야합니다 (mod_php가 부정 행위를하기 때문에 PHP를 제외하고). 나는 당신이 더 많은 것을 알기 위해 RAR을 할 것이라고 확신합니다.
그래서 WSGI 애플리케이션의 필수 부분은 무엇입니까? -
wsgi 응용 프로그램은 함수, 클래스 또는 __call__ 메소드가있는 클래스 인스턴스와 같은 python - callable 입니다.
응용 프로그램 호출 가능은 두 가지 인수를 받아야합니다. Environ, 요청 데이터를 포함하는 Python Dict, START_FN 자체는 호출 가능입니다.
응용 프로그램은 두 인수와 함께 start_fn을 호출해야합니다.
응용 프로그램은 응답 본문의 바이트를 포함하는 반복 가능한 덩어리를 편리하고 스트리밍 가능한 청크로 반환합니다.이 경우 "Hello, World!"만 포함하는 문자열 목록입니다. (앱이 클래스 인 경우 __iter__ 메소드에서 수행 할 수 있습니다.)
예를 들어 다음 두 예제는 첫 번째 예와 같습니다.
-
당신은 이미이 정보를 사용할 수있는 방법을 생각하고 있을지 모르지만 아마도 가장 관련성이 높은 것은 중간 전쟁을 쓰는 것입니다. - .
재즈를 위로
중간wares는 WSGI 앱의 기능을 쉽게 확장하는 방법입니다. 호출 가능 만 제공하면 다른 기능으로 마무리 할 수는 있지만 제기 할 수 있습니다. - .
예를 들어 Environ의 내용을 조사하고 싶다고 가정 해 봅시다. 이 예에서와 같이 다음과 같이 미들웨어를 쉽게 만들 수 있습니다.
<_> 여기, log_environ은 함수를 반환하는 함수이며, 원래 콜백으로 연기하기 전에 Environ 논쟁을 인쇄합니다.
.
이런 식으로 중간 전쟁을 쓰는 장점은 미들웨어와 핸들러가 서로를 알거나 돌볼 필요가 없다는 것입니다. 플라스크 앱은 WSGI 앱이므로 로그 _environ을 플라스크 애플리케이션으로 쉽게 볼 수 있습니다.
몇 가지 다른 유용한 미들웨어 아이디어 :
파일의 바닥에 큰 피라미드를 만들고 싶지 않으면 한 번에 많은 미들웨어를 적용하기 위해 감소를 사용할 수 있습니다.
start_fn 인수를 활용하여 응답을 수정하는 미들웨어를 작성할 수도 있습니다. 다음은 컨텐츠 유형 헤더가 텍스트/일반인 경우 출력을 되돌리는 미들웨어입니다.
<span>def app(environ, start_fn):
</span> start_fn<span>('200 OK', [('Content-Type', 'text/plain')])
</span> <span>return ["Hello World!\n"]
</span>
로그인 후 복사
start_fn의 분리와 응답 덕분에 조금 더 엉키었지만 여전히 완벽하게 실행 가능합니다. <span>class app(object):
</span>
<span>def __init__(self, environ, start_fn):
</span> self<span>.environ = environ
</span> self<span>.start_fn = start_fn
</span>
<span>def __iter__(self):
</span> self<span>.start_fn('200 OK', [('Content-Type', 'text/plain')])
</span> <span>yield "Hello World!\n"
</span>
로그인 후 복사
또한 wsgi를 엄격하게 사양 준수하려면 응답에 대한 닫기
메소드를 점검하고 참석 한 경우 호출해야합니다. 레거시 WSGI 애플리케이션은 호출 처리시 반복 대신 write
기능을 반환 할 수 있습니다. 미들웨어가 이전 애플리케이션을 지원하도록하려면이 사례를 처리해야 할 수도 있습니다.
일단 Raw WSGI로 연주를 시작하면 Python이 왜 수십 개의 웹 프레임 워크를 가지고 있는지 이해하기 시작합니다. WSGI는 처음부터 시작하는 것을 매우 간단하게 만듭니다. 예를 들어, 라우팅 문제를 고려할 수 있습니다.
wsgi와 직접 작업하는 것은 이상으로 라이브러리를 조립하는 유연성을 즐기면 좋을 수 있습니다.
템플릿 라이브러리 : 원하는 템플릿 라이브러리 (예 : Jinja2, Pystashe)에 렌더링 된 템플릿을 핸들러에서 반환하십시오! .
경로 나 Werkzeug의 라우팅과 같은 라이브러리로 라우팅을 도와줍니다. 실제로 wsgi에 대한 명확한 빛의 추상화를 사용하려면 Werkzeug를 살펴보십시오. .
플라스크 또는 이와 유사한 데이터베이스/마이그레이션 라이브러리를 사용하십시오.
-
물론 비 전문화 된 응용 프로그램의 경우 에지 케이스가 올바르게 처리되고 무엇이 처리되지 않도록 프레임 워크를 사용하고 싶을 것입니다.
.
그러나 서버는 어떻습니까?
WSGI 앱을 제공하는 방법에는 여러 가지가 있습니다. 우리는 이미 Gunicorn에 대해 이야기했습니다. UWSGI는 또 다른 훌륭한 옵션입니다. 정적 자산을 제공하기 위해 Nginx와 같은 것을 설정하고 확실한 출발점이 있어야합니다. - .
그리고 그게 전부입니다!
파이썬 웹 응용 프로그램에 대한 자주 묻는 질문 (FAQ) 및 WSGI
Python Web Applications에서 WSGI의 역할은 무엇입니까?
-
WSGI 또는 Web Server Gateway 인터페이스는 웹 서버와 웹 응용 프로그램 간의 표준 인터페이스입니다. 애플리케이션과 웹 서버가 서로 통신하고 요청을 보낼 수 있으므로 Python Web Applications에서 중요한 역할을합니다. WSGI는 브리지 역할을하여 웹 서버가 웹 브라우저와 같은 클라이언트의 요청을 웹 응용 프로그램으로 전달할 수있게합니다. 그런 다음 애플리케이션은 요청을 처리하고 웹 서버를 통해 클라이언트에게 응답을 보냅니다.
WSGI는 Python 웹 응용 프로그램에서 어떻게 작동합니까? WSGI는 공통 인터페이스를 정의하여 작동합니다. 웹 서버는 웹 응용 프로그램과 통신합니다. 클라이언트가 요청을 웹 서버로 보내면 서버는 WSGI 인터페이스를 사용하여 해당 요청을 웹 응용 프로그램으로 전달합니다. 응용 프로그램은 요청을 처리하고 응답을 반환하고 서버가 클라이언트로 다시 보냅니다. 이 프로세스는 특정 구현에 관계없이 웹 서버 및 애플리케이션이 상호 작용할 수있는 일관되고 안정적인 방법을 허용합니다. Python에 대한 인기있는 WSGI 서버는 무엇입니까?
몇 가지 인기있는 WSGI 서버가 있습니다. 각각 고유 한 강점과 약점을 가진 Python에 사용할 수 있습니다. 가장 일반적으로 사용되는 것 중 일부는 Gunicorn, UWSGI 및 MOD_WSGI를 포함합니다. Gunicorn은 단순성과 사용 편의성으로 유명하며 UWSGI는 속도와 효율성으로 칭찬을받습니다. 반면에 mod_wsgi는 Apache 서버를위한 모듈이며 종종 엔터프라이즈 환경에서 사용됩니다. wsgi를 사용하여 Python 웹 응용 프로그램을 배포하는 방법?
WSGI를 사용하여 Python 웹 응용 프로그램을 배포하려면 여러 단계가 포함됩니다. 먼저 Gunicorn 또는 UWSGI와 같은 WSGI 서버를 설치해야합니다. 다음으로 WSGI 서버를 응용 프로그램에 대한 요청을 처리하기위한 프록시로 사용하도록 웹 서버를 구성해야합니다. 여기에는 필요한 WSGI 설정을 포함하도록 서버의 구성 파일을 수정하는 것이 포함됩니다. 마지막으로 WSGI 서버를 시작하여 응용 프로그램의 WSGI 파일을 가리켜 야합니다. DJANGO와 함께 WSGI를 사용할 수 있습니까?
예, Django와 함께 WSGI를 사용할 수 있습니다. 실제로 Django에는 Django 프로젝트를 배포하는 데 사용할 수있는 내장 WSGI 응용 프로그램이 제공됩니다. Django WSGI 응용 프로그램은 Django 프로젝트와 웹 서버 사이의 브리지 역할을하여 요청 및 응답을 전달하고 교환 할 수 있습니다.
WSGI와 ASGI의 차이점은 무엇입니까?
WSGI와 WSGI와 WSGI. ASGI는 모두 Python 웹 응용 프로그램의 인터페이스이지만 다른 목적을 제공합니다. WSGI는 웹 서버와 웹 애플리케이션 간의 통신을 허용하는 동기식 인터페이스입니다. ASGI 또는 비동기 서버 게이트웨이 인터페이스는 비동기 작업을 지원하는 WSGI의 확장입니다. 즉, ASGI를 사용하면 응용 프로그램이 차단하지 않고 동시에 여러 요청을 처리 할 수있어 실시간 애플리케이션에 더 효율적입니다. Python에서 WSGI 애플리케이션을 만드는 방법은 무엇입니까?
Python에서 WSGI 애플리케이션을 작성하려면 환경 사전과 START_RESPONSE 호출이라는 두 가지 인수를 받아들이는 기능을 정의해야합니다. 환경 사전에는 들어오는 요청에 대한 정보가 포함되어 있으며 start_response 호출은 요청에 대한 응답을 시작하는 데 사용됩니다. 귀하의 기능은 응답의 본문을 생성하는 반복 가능한 반환을 반환해야합니다. Python 웹 응용 프로그램에서 WSGI를 사용하면 어떤 이점이 있습니까?
Python 웹 애플리케이션에서 WSGI를 사용하면 몇 가지 이점이 있습니다. 먼저 웹 서버 및 응용 프로그램에 대한 표준 인터페이스를 제공하여 Python 웹 응용 프로그램을보다 쉽게 개발하고 배포 할 수 있습니다. 둘째, 다양한 WSGI 호환 서버 및 애플리케이션 중에서 선택할 수 있으므로 유연성이 향상됩니다. 마지막으로, 다른 서버와 미들웨어와 함께 동일한 WSGI 애플리케이션을 사용할 수 있으므로 코드 재사용 성을 촉진합니다.
플라스크와 함께 WSGI를 사용할 수 있습니까? 예, 플라스크와 함께 WSGI를 사용할 수 있습니다. 실제로 플라스크 응용 프로그램은 기본적으로 WSGI 응용 프로그램입니다. 플라스크 애플리케이션을 만들 때 실제로 플라스크 프레임 워크가 들어오는 요청을 처리하고 응답을 보내는 데 사용할 WSGI 응용 프로그램을 작성합니다. wsgi 미들웨어 란 무엇입니까?
WSGI 미들웨어는 WSGI 서버와 WSGI 애플리케이션 사이에있는 구성 요소입니다. 응용 프로그램에 도달하기 전에 요청을 처리 할 수 있으며 클라이언트로 돌아 가기 전에 응답에 응답 할 수 있습니다. 미들웨어는 세션 관리, URL 라우팅 및 인증과 같은 다양한 기능을 구현하는 데 사용될 수 있습니다.
위 내용은 파이썬 웹 응용 프로그램 : WSGI의 기본 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!