WSGI를 배우고 파이썬이 작은 물건을 땀 흘리게하십시오

폭로: 귀하의 지원은 사이트 운영을 유지하는 데 도움이됩니다! 이 페이지에서 권장하는 일부 서비스에 대한 추천 수수료가 발생합니다.


예전에는 Python에서 웹 응용 프로그램을 개발하는 데 문제가있었습니다. 개발자는 특별한주의를 기울이고 웹 응용 프로그램이 다른 웹 서버와 Python의 다양한 웹 프레임 워크에서 원활하게 실행되도록해야했기 때문입니다. 응용 프로그램 개발 중 특정 Python 웹 프레임 워크를 선택하면 호환되는 웹 서버의 선택이 제한되어 완성 된 응용 프로그램을 실행할 수 있습니다..

이 문제에 대한 해결책으로 WSGI (Web Server Gateway Interface)가 도입되었습니다. WSGI는 웹 서버와 Python 웹 프레임 워크 또는 응용 프로그램 간의 통신을위한 표준화 된 인터페이스 사양입니다. 응용 프로그램 또는 프레임 워크가 WSGI 스펙을 준수하도록 작성된 경우 동일한 스펙을 지원하는 모든 웹 서버에서 실행됩니다..

물론, 표준화 된 인터페이스 사양을 가진 유일한 프로그래밍 언어는 Python이 아닙니다. 예를 들어, 많은 현대 프로그래밍 언어는 동일한 접근 방식을 사용하므로 Ruby는 자체 랙 서버 인터페이스를 사용하고 JavaScript는 JSGI 게이트웨이 인터페이스를 사용하고 Perl은 PSGI를 사용합니다.

약력

WSGI 사양은 원래 Phillip J Eby가 작성하고 2003 년 12 월에 발표 한 Python Enhancement Proposal 333 (PEP 333)에 도입되었습니다.이 초기 WSGI 사양 초안은 WSGI의 기본 원칙과 목표를 제시했습니다. 구현하기 쉬워야했습니다. 간단하고 보편적이며 기존 서버와 프레임 워크를 쉽게 상호 연결해야합니다..

WSGI는 Python 서버 및 프레임 워크 제작자와 개발자에 의해 빠르게 채택되었으며 Python 웹 응용 프로그램 개발의 사실상 표준이되었습니다. WSGI 사양의 최신 버전은 V1.0.1이며 2010 년 9 월 26 일 PEP 3333에 게시되었습니다..

WSGI 사양 개요

WSGI 사양은 서버 측, 애플리케이션 측 및 인터페이스의 서버 측 및 애플리케이션 측을 모두 구현하는 미들웨어 구성 요소의 세 가지 특정 역할을 선언합니다..

응용 프로그램 측

WSGI의 응용 프로그램 측은 두 개의 인수를 허용하고 코드에서 호출 할 수있는 간단한 객체입니다. 이 예는 정적 “Hello world!”를 반환하는 간단한 WSGI 응용 프로그램을 보여줍니다. 페이지:

데프 simple_app (환경, start_response) :
상태 = ‘200 OK’
response_headers = [( ‘콘텐츠 유형’, ‘text / plain’)]
start_response (상태, response_headers)
return [ ‘Hello world! n’]

모든 서버가 반복 요청을하므로 응용 프로그램 측 객체를 여러 번 호출 할 수 있습니다..

서버 측

WSGI의 서버 측은 단순히 HTTP 클라이언트로부터 요청을 수신하고, 각 요청마다 한 번씩 애플리케이션을 호출하고, 애플리케이션이 리턴 한 응답을 클라이언트로 보냅니다.

미들웨어 구성 요소

WSGI 사양에 정의 된 미들웨어 구성 요소는 인터페이스, 응용 프로그램 측 및 서버 측을 모두 사용합니다. 미들웨어 기능은 서버 측과 애플리케이션 측 모두에 투명합니다..

미들웨어 구성 요소는 일반적으로 대상 URL을 기반으로 요청을 다른 애플리케이션 오브젝트로 라우팅하는 것과 같은 기능을 수행하여 여러 애플리케이션이 동일한 프로세스에서 나란히 실행될 수 있도록합니다. 로드 밸런싱, 원격 처리 또는 컨텐츠 후 처리 가능.

이 예제는 모든 것을 대문자로 표시하는 간단한 미들웨어 구성 요소를 보여줍니다.

어퍼웨어 클래스 :
데프 __init __ (자체, 앱) :
self.wrapped_app = 앱

데프 __call __ (자체, 환경, 시작 _ 응답) :
self.wrapped_app (environ, start_response)의 데이터 :
데이터를 반환합니다.

WSGI 사용

WSGI는 이제 Python 웹 애플리케이션 개발의 표준으로 채택되었습니다. Python 버전 2.5 및 이후 릴리스에는 내장 WSGI 지원 기능이 있습니다. Python 버전 2.4 이하에서는 WSGI 지원을 별도로 설치할 수 있습니다. PEP 3333에 선언 된 WSGI 사양의 업데이트 된 버전은 Python 3에서 사용할 수 있습니다..

Python으로 웹 애플리케이션을 개발하는 경우 Django, Flask 또는 Bottle Python 웹 프레임 워크 또는 기타 현재 Python 프레임 워크와 같이 업계에서 입증 된 표준을 사용하십시오. 애플리케이션을 빌드하기 위해 WSGI 스펙에 대해 많이 배울 필요는 없습니다. 현재 세대의 웹 애플리케이션 프레임 워크 만 사용하면 WSGI를 모두 지원하므로 명확해야합니다..

반면에 새로운 웹 응용 프로그램 프레임 워크를 직접 개발하는 경우 WSGI 사양을 잘 살펴보고 WSGI에 대한 학습 리소스를 확인해야합니다..

WSGI 자료

WSGI에 대한 자세한 내용은 다음 온라인 리소스 중 일부를 살펴 보는 것이 좋습니다.

  • WSGI 커뮤니티 사이트는 분명히 첫 번째 방문 장소입니다. 유용한 리소스를 많이 찾을 수 있으며 WSGI에 대한 유용한 정보 섹션도 있습니다. 이 사이트에는 WSGI를 지원하는 프레임 워크 및 서버도 나와 있습니다..
  • 자세한 내용은 전체 Python Enhancement Proposal 333 및 Python Enhancement Proposal 3333을 참조하십시오..
  • Pylons Web Development Framework 온라인 문서에는 WSGI에 대한 매우 훌륭하고 자세한 섹션이 있습니다..
  • Codepoint의 WSGI Tutorial은 몇 가지 간단한 예제를 사용하여 직장에서 WSGI 사양을 시연합니다..

WSGI 서적

WSGI를 다루는 책은 찾아보기 힘들며, 일반적으로 다음과 같은 다양한 Python 웹 애플리케이션 프로그래밍 책에서 WSGI를 다루는 장을 찾을 수 있습니다.

  • Python 네트워크 프로그래밍의 기초 : Goerzen, Bower 및 Rhodes의 Python으로 네트워크 응용 프로그램 작성을위한 포괄적 인 가이드 : 웹 응용 프로그램 프로그래밍 장에서는 구성 요소 상호 운용성에 대한 WSGI 표준과 Django와 같은 최신 웹 프레임 워크를 다룹니다..

결론

WSGI는 필수 Python 사양이지만 실제로는 대부분의 Python 개발자가 걱정할 필요가 없습니다. 주요 프레임 워크를 사용하는 한 WSGI는이를 다시 생각하지 않고 혜택을 누릴 수 있습니다. 즉, 대부분의 개발자는 사양이 모든 주요 Python 프레임 워크에서 구현되었으므로 WSGI에 대한 친밀한 지식이 필요하지 않습니다..

그러나 WSGI는 Python 프로그래밍의 전제 조건은 아니지만 여전히 관련이 있습니다. 주목할만한 예외 중 하나는 Python 애플리케이션이 아닌 Python 프레임 워크에서 작업하기로 결정한 소프트웨어 엔지니어와 관련이 있습니다. WSGI는 필수 사양이며 WSGI를 프레임 워크에 통합하려면 WSGI의 기능을 알아야합니다..

이것은 분명히 (매우) 틈새 시장이지만 WSGI 개발이 중단되었다는 의미는 아닙니다. 커뮤니티가 크지 않다는 것을 의미하지만.

추가 자료 및 자료

코딩 및 개발과 관련된 더 많은 가이드, 자습서 및 인포 그래픽이 있습니다.

  • Python 소개, 리소스 및 FAQ : Python을 처음 사용하는 경우이 소개를 통해.
  • MPI — 소개, 기록 및 리소스 : MPI (Message Passing Interface)를 사용하면 프로그램과 다른 컴퓨터 시스템이 서로에게 메시지를 보낼 수 있습니다..
  • 리눅스 프로그래밍 소개와 자료 : 리눅스 프로그래밍에 대한 심층적 인 분석은 모든 행동이있는 커널로 내려 간다.

어떤 코드를 배워야합니까?

코딩해야 할 프로그래밍 언어에 대해 혼란 스러우십니까? 인포 그래픽, 어떤 코드를 배워야합니까?를 확인하십시오. 언어의 다양한 측면에 대해서만 논의 할뿐만 아니라“생활에 필요한 Java를 얼마만큼 돈을 벌 수 있을까요?”와 같은 중요한 질문에 답변합니다.

어떤 코드를 배워야합니까?
어떤 코드를 배워야합니까?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map