다음 프로젝트를 위해 시도할 9가지 Python 웹 서버

이 목록에서는 Python 애플리케이션을 배포하는 데 사용할 수 있는 여러 Python 웹 서버를 소개합니다.

웹 서버의 작동 방식과 서버 게이트웨이 인터페이스의 필요성을 이해하는 것으로 시작하겠습니다. 그런 다음 Python 웹 서버 목록과 주요 기능을 살펴보겠습니다. 대부분은 프로젝트에서 설치하고 사용할 수 있는 PyPI 패키지로 제공됩니다.

의 시작하자!

웹 서버란 무엇입니까?

Python 애플리케이션을 개발할 때 개발 서버를 사용하여 앱을 테스트합니다. 그러나 개발이 완료되면 프로덕션 등급 서버에 앱을 배포해야 합니다. 위에 추가된 여러 계층 중 웹 서버는 HTTP 서버의 기본 기능을 가져야 합니다.

Python 웹 서버는 웹 브라우저와 같은 클라이언트의 HTTP 요청(GET, PUT 및 POST와 같은 단순 HTTP 요청)을 처리하고 응답을 반환할 수 있어야 합니다. 이 응답에는 요청이 성공적으로 처리되었는지 여부를 나타내는 HTTP 상태 코드가 포함될 수 있습니다. HTML 웹 페이지와 JSON, XML 등과 같은 반구조화된 데이터로 구성될 수 있습니다.

ASGI 대 WSGI: 서버 게이트웨이 인터페이스 이해

Django 또는 Flask와 같이 선택한 프레임워크에서 Python 애플리케이션을 개발했다고 가정합니다. 기존 서버는 Python 응용 프로그램에 대한 요청을 이해하고 처리하지 못할 수 있습니다. 여기에서 서버 게이트웨이 인터페이스가 작동합니다.

이 게이트웨이 인터페이스는 WSGI(Web Server Gateway Interface) 또는 ASGI(Asynchronous Server Gateway Interface)일 수 있습니다. 웹 서버는 클라이언트로부터 요청을 수신한 다음 서버 게이트웨이 인터페이스로 리디렉션합니다. 인터페이스(WSGI/ASGI)는 노출된 호출 가능 항목을 통해 Python 애플리케이션과 상호 작용합니다.

WSGI(Web Server Gateway Interface)는 요청을 순차적으로 처리합니다. 느린 HTTP 요청이 여러 개 있는 경우 처리량에 영향을 줍니다.

비동기식 서버 게이트웨이 인터페이스(ASGI)는 WSGI의 후속 제품으로 요청을 비동기식으로 처리하는 추가 기능이 있습니다.

  오류 98 수정 SMS 종료 거부

현재 서비스 중인 요청에 데이터베이스 읽기가 필요하고(잠재적으로 오랜 시간이 걸릴 수 있음) 응답을 기다리고 있다고 가정합니다. 첫 번째 요청이 응답을 기다리고 있을 때 ASGI는 두 번째 들어오는 요청을 처리할 수 있습니다.

이는 첫 번째 요청이 두 번째 요청에 대해 처리되어야 하는 WSGI와 대조됩니다. 따라서 ASGI를 사용하면 처리량이 증가할 수 있습니다. ASGI를 사용하면 애플리케이션 내에서 비동기 Python 기능을 사용할 수도 있습니다.

파이썬 웹 서버

이제 Python 애플리케이션에 사용할 수 있는 웹 서버를 나열하십시오. 또한 프로덕션 준비 서버에 대한 기본 지원을 제공하는 특정 프레임워크도 포함했습니다. 이것은 완전한 목록이 아니며 아래 웹 서버 권장 사항은 특정 순서가 아닙니다.

유비콘

FastAPI를 사용한 애플리케이션 개발에 익숙하다면 웹 서버 구현인 Uvicorn을 접했을 것입니다. Uvicorn은 Python용 ASGI 서버 구현입니다.

pip를 사용하여 Uvicorn 및 관련 종속성을 설치하려면 다음 명령을 실행합니다.

$ pip install uvicorn[standard] 
# includes installation of optional and Cython-based dependencies

다음은 Uvicorn의 두드러진 특징입니다.

  • ASGI 구현
  • 비동기 Python 환경에서 앱 실행 지원
  • 광범위한 옵션 목록이 있는 명령줄 도구
  • 공장 기능에서 실행 중인 애플리케이션 지원
  • 프로그래밍 방식으로 서버 인스턴스를 제어하는 ​​기능 제공

구니콘

Gunicorn은 고급 프로세스 관리 기능으로 잘 알려진 Python 애플리케이션용 WSGI 서버입니다.

Uvicorn은 Gunicorn 작업자 클래스를 제공하여 성능 및 프로세스 관리 이점을 동시에 달성할 수 있습니다. 이 문서 페이지에는 Gunicorn 배포에 대한 세부 정보가 포함되어 있습니다.

Python 3.5 이상이 있는 경우 pip를 사용하여 Gunicorn을 설치할 수 있습니다.

$ pip install gunicorn

다음은 Gunicorn의 두드러진 기능입니다.

  • 간단하고 빠름
  • 많은 웹 프레임워크와 호환
  • HTTP 프록시 서버 사용 지원
  • 고급 프로세스 관리

체리파이

CherryPy는 Django, Flask 및 FastAPI와 같은 Python 웹 프레임워크이지만 이러한 프레임워크만큼 인기가 없습니다. 몇 가지 안정적인 릴리스를 통해 CherryPy는 10년 넘게 완전한 프레임워크로 발전해 왔습니다. 또한 지원하는 개발자 커뮤니티가 있습니다.

  Discord에서 위치를 변경하는 방법

CherryPy가 단순하고 미니멀하면서도 강력한 프레임워크라는 본질을 전달하는 흥미로운 Zen of CherryPy를 확인할 수 있습니다.

CherryPy는 웹 서버가 아닌 Python 프레임워크이지만 대부분의 다른 프레임워크와 달리 기본적으로 프로덕션 등급 서버를 지원하므로 목록에 있습니다.

CherryPy를 설치하고 시작하려면 다음을 실행하십시오.

$ pip install CherryPy

다음은 CherryPy의 두드러진 기능입니다.

  • 객체 지향 파이썬을 사용하는 파이썬 프레임워크; 초보자에게 잘 맞는
  • 프로덕션 준비가 된 HTTP 서버인 Cheroot 지원
  • Django와 같은 다른 웹 프레임워크보다 배우기 쉽습니다.
  • 간단한 웹 앱을 구축하고 마이크로서비스에 배포하기 위한 지원

다프네

Django는 가장 인기 있는 Python 웹 프레임워크 중 하나입니다. Django로 애플리케이션을 개발했다면 Daphne 웹 서버를 사용했을 것입니다. Daphne은 ASGI 서버 구현에 대한 참조로 사용된 최초의 ASGI 서버 구현 중 하나입니다.

Daphne은 pip를 사용하여 설치할 수 있는 PyPI 패키지로 제공됩니다.

$ pip install daphne

다음은 전체 스택 프로덕션 준비 Python 응용 프로그램을 빌드하는 과정을 안내하는 자세한 자습서입니다.

다음은 Daphne의 두드러진 특징입니다.

  • 프로덕션 환경에서 널리 채택됨
  • 모든 ASGI 서버 구현에 대한 참조
  • HTTP, HTTP2 및 WebSocket 프로토콜 지원

파이썬 트리오

Trio 프로젝트는 병렬 I/O 및 동시성을 지원하는 프로덕션 등급의 비동기 I/O 기능을 제공하는 것을 목표로 합니다. 이 프로젝트에는 여러 웹 및 HTTP Python 라이브러리도 있습니다.

PyPI에서 최신 Trio 릴리스(2022년 6월)를 설치할 수 있습니다.

$ pip install trio

다음은 Python을 사용한 웹 프로그래밍에 유용한 Trio 라이브러리 목록입니다.

  • hypercorn: Hypercorn은 HTTP를 지원하는 ASGI 서버입니다.
  • 머핀: 머핀은 Python용 ASGI 웹 프레임워크입니다.
  • startlette: Starlette는 가벼운 ASGI 프레임워크입니다.
  • trio-websocket: WebSocket 서버 및 클라이언트 지원
  • httpx: Python용 HTTP 클라이언트

꼬인 웹

Twisted는 Python 애플리케이션을 위한 프레임워크입니다. 이 이벤트 기반 프레임워크에는 twisted.web이라는 웹 프로그래밍용 모듈이 포함되어 있습니다.

pip를 사용하여 Twisted 및 관련 모듈을 설치할 수 있습니다.

$ pip install Twisted

다음은 Twisted의 두드러진 기능입니다.

  • 단위 테스트 및 정적 코드 검사와 같은 개발자 친화적인 기능
  • twisted.web은 WSGI 서버와 HTTP 클라이언트 및 서버 지원을 제공합니다.
  Mac에서 다중 모니터를 사용하는 방법

AIOHTTP

AIOHTTP는 클라이언트 및 서버 API를 통해 클라이언트 및 서버 측 기능을 제공하는 Python 라이브러리입니다.

다음은 API에 대한 요청 속도를 크게 높이는 클라이언트 측의 비동기 프로그래밍 기능을 설명하는 유용한 비디오입니다.

다음은 AIOHTTP의 두드러진 기능입니다.

  • HTTP 서버 및 클라이언트 기능 모두 지원
  • 더 쉬운 디버깅을 위한 로깅 지원; 클라이언트, 서버, 웹 소켓 등에 대한 로깅을 제공합니다.
  • 테스트를 위한 pytest 플러그인을 통한 테스트에 대한 기본 지원: pytest-aiohttp, PyPI 패키지로 사용 가능

폭풍

Tornado는 비동기 네트워킹을 지원하는 또 다른 Python 웹 프레임워크입니다. 최근 몇 년 동안 Tornado의 안정적인 릴리스가 많이 있었습니다. 가장 최신 버전인 6.2가 2022년 7월에 릴리스되었습니다. 현재 Tornado는 Python 3.7 이상을 지원합니다.

이 목록에 있는 대부분의 패키지와 마찬가지로 Tornado는 pip를 사용하여 설치할 수도 있습니다.

$ pip install tornado

다음은 Tornado의 두드러진 특징입니다.

  • HTTP 서버 tornado.httpserver 및 클라이언트 지원
  • 확장 가능하고 비차단 네트워크 I/O 사용
  • 상당히 긴 시간 간격 동안 연결이 필요한 애플리케이션에 매우 적합
  • 로깅, 단위 테스트 등을 위한 유틸리티
  • 인증 서비스와의 원활한 통합

마인헬드

Meinheld는 Python용 WSGI 서버입니다. 이벤트 처리 및 HTTP 요청 처리를 위해 기존 라이브러리를 사용하고 구축합니다.

pip를 사용하여 Meinheld를 설치할 수 있습니다.

$ pip install meinheld

Meinheld의 일부 기능:

  • http-parser 라이브러리를 사용하여 들어오는 HTTP 요청 처리
  • 이벤트 처리를 위해 picoev 라이브러리 위에 빌드

결론

이 Python 웹 서버 목록이 도움이 되었기를 바랍니다. 향후 프로젝트에서 꼭 사용해 보십시오. 주요 기능을 나열했습니다. 종속성과 작동 방식을 완전히 이해하려면 애플리케이션에서 이를 사용해야 합니다. 👩🏽‍💻

Python 기술을 향상시키려면 koreantech.org의 Python 자습서 라이브러리를 확인하는 것이 좋습니다. 즐거운 코딩!