파이썬 웹 응용 프로그램 : WSGI의 기본 사항
WSGI 앱은 다양한 방식으로 제공 될 수 있으며 Gunicorn과 UWSGI는 두 가지 인기있는 옵션입니다. 정적 자산을 제공하기 위해 Nginx와 같은 것을 설정하는 것이 좋습니다.
-
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을 할 것이라고 확신합니다. -
- callable 입니다.
응용 프로그램 호출 가능은 두 가지 인수를 받아야합니다. Environ, 요청 데이터를 포함하는 Python Dict, START_FN 자체는 호출 가능입니다. 응용 프로그램은 두 인수와 함께 start_fn을 호출해야합니다. 응용 프로그램은 응답 본문의 바이트를 포함하는 반복 가능한 덩어리를 편리하고 스트리밍 가능한 청크로 반환합니다.이 경우 "Hello, World!"만 포함하는 문자열 목록입니다. (앱이 클래스 인 경우 __iter__ 메소드에서 수행 할 수 있습니다.)
예를 들어 - .
재즈를 위로 - .
예를 들어
Environ의 내용을 조사하고 싶다고 가정 해 봅시다. 이 예에서와 같이 다음과 같이 미들웨어를 쉽게 만들 수 있습니다.
<_> 여기, log_environ은 함수를 반환하는 함수이며, 원래 콜백으로 연기하기 전에 Environ 논쟁을 인쇄합니다.
wsgi 응용 프로그램은 함수, 클래스 또는 __call__ 메소드가있는 클래스 인스턴스와 같은 python 다음 두 예제는 첫 번째 예와 같습니다. 당신은 이미이 정보를 사용할 수있는 방법을 생각하고 있을지 모르지만 아마도 가장 관련성이 높은 것은 중간 전쟁을 쓰는 것입니다. 중간wares는 WSGI 앱의 기능을 쉽게 확장하는 방법입니다. 호출 가능 만 제공하면 다른 기능으로 마무리 할 수는 있지만 제기 할 수 있습니다. 이런 식으로 중간 전쟁을 쓰는 장점은 미들웨어와 핸들러가 서로를 알거나 돌볼 필요가 없다는 것입니다. 플라스크 앱은 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의 분리와 응답 덕분에 조금 더 엉키었지만 여전히 완벽하게 실행 가능합니다. 또한 wsgi를 엄격하게 사양 준수하려면 응답에 대한<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 애플리케이션은 호출 처리시 반복 대신write
기능을 반환 할 수 있습니다. 미들웨어가 이전 애플리케이션을 지원하도록하려면이 사례를 처리해야 할 수도 있습니다.일단 Raw WSGI로 연주를 시작하면 Python이 왜 수십 개의 웹 프레임 워크를 가지고 있는지 이해하기 시작합니다. WSGI는 처음부터 시작하는 것을 매우 간단하게 만듭니다. 예를 들어, 라우팅 문제를 고려할 수 있습니다. wsgi와 직접 작업하는 것은 이상으로 라이브러리를 조립하는 유연성을 즐기면 좋을 수 있습니다.-
물론
비 전문화 된 응용 프로그램의 경우 에지 케이스가 올바르게 처리되고 무엇이 처리되지 않도록 프레임 워크를 사용하고 싶을 것입니다. .
- .
그리고 그게 전부입니다! 파이썬 웹 응용 프로그램에 대한 자주 묻는 질문 (FAQ) 및 WSGI Python Web Applications에서 WSGI의 역할은 무엇입니까?
템플릿 라이브러리 : 원하는 템플릿 라이브러리 (예 : Jinja2, Pystashe)에 렌더링 된 템플릿을 핸들러에서 반환하십시오! . 경로 나 Werkzeug의 라우팅과 같은 라이브러리로 라우팅을 도와줍니다. 실제로 wsgi에 대한 명확한 빛의 추상화를 사용하려면 Werkzeug를 살펴보십시오. . 플라스크 또는 이와 유사한 데이터베이스/마이그레이션 라이브러리를 사용하십시오. 그러나 서버는 어떻습니까? WSGI 앱을 제공하는 방법에는 여러 가지가 있습니다. 우리는 이미 Gunicorn에 대해 이야기했습니다. UWSGI는 또 다른 훌륭한 옵션입니다. 정적 자산을 제공하기 위해 Nginx와 같은 것을 설정하고 확실한 출발점이 있어야합니다. Python에 대한 인기있는 WSGI 서버는 무엇입니까?
몇 가지 인기있는 WSGI 서버가 있습니다. 각각 고유 한 강점과 약점을 가진 Python에 사용할 수 있습니다. 가장 일반적으로 사용되는 것 중 일부는 Gunicorn, UWSGI 및 MOD_WSGI를 포함합니다. Gunicorn은 단순성과 사용 편의성으로 유명하며 UWSGI는 속도와 효율성으로 칭찬을받습니다. 반면에 mod_wsgi는 Apache 서버를위한 모듈이며 종종 엔터프라이즈 환경에서 사용됩니다.
wsgi를 사용하여 Python 웹 응용 프로그램을 배포하는 방법? DJANGO와 함께 WSGI를 사용할 수 있습니까?
예, Django와 함께 WSGI를 사용할 수 있습니다. 실제로 Django에는 Django 프로젝트를 배포하는 데 사용할 수있는 내장 WSGI 응용 프로그램이 제공됩니다. Django WSGI 응용 프로그램은 Django 프로젝트와 웹 서버 사이의 브리지 역할을하여 요청 및 응답을 전달하고 교환 할 수 있습니다.
WSGI와 ASGI의 차이점은 무엇입니까?Python 웹 응용 프로그램에서 WSGI를 사용하면 어떤 이점이 있습니까?
Python 웹 애플리케이션에서 WSGI를 사용하면 몇 가지 이점이 있습니다. 먼저 웹 서버 및 응용 프로그램에 대한 표준 인터페이스를 제공하여 Python 웹 응용 프로그램을보다 쉽게 개발하고 배포 할 수 있습니다. 둘째, 다양한 WSGI 호환 서버 및 애플리케이션 중에서 선택할 수 있으므로 유연성이 향상됩니다. 마지막으로, 다른 서버와 미들웨어와 함께 동일한 WSGI 애플리케이션을 사용할 수 있으므로 코드 재사용 성을 촉진합니다.
플라스크와 함께 WSGI를 사용할 수 있습니까?예, 플라스크와 함께 WSGI를 사용할 수 있습니다. 실제로 플라스크 응용 프로그램은 기본적으로 WSGI 응용 프로그램입니다. 플라스크 애플리케이션을 만들 때 실제로 플라스크 프레임 워크가 들어오는 요청을 처리하고 응답을 보내는 데 사용할 WSGI 응용 프로그램을 작성합니다.
wsgi 미들웨어 란 무엇입니까? - callable 입니다.
위 내용은 파이썬 웹 응용 프로그램 : WSGI의 기본 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal 및 Actuated 간의 공동 작업 인이 파일럿 프로그램은 CNCF Github 프로젝트를위한 ARM64 CI/CD를 간소화합니다. 이 이니셔티브는 보안 문제 및 성과를 다룹니다

이 튜토리얼은 AWS 서비스를 사용하여 서버리스 이미지 처리 파이프 라인을 구축함으로써 안내합니다. ECS Fargate 클러스터에 배포 된 Next.js Frontend를 만들어 API 게이트웨이, Lambda 기능, S3 버킷 및 DynamoDB와 상호 작용합니다. th

이 최고의 개발자 뉴스 레터와 함께 최신 기술 트렌드에 대해 정보를 얻으십시오! 이 선별 된 목록은 AI 애호가부터 노련한 백엔드 및 프론트 엔드 개발자에 이르기까지 모든 사람에게 무언가를 제공합니다. 즐겨 찾기를 선택하고 Rel을 검색하는 데 시간을 절약하십시오
