[python] Nginx를 사용한 WSGI 대 uWSGi [닫기]

Nginx와 함께 WSGI VS uWSGI 를 사용할 때 누구든지 장단점을 설명해 주 시겠습니까 ?

현재 저는 준비한 Django 웹 사이트의 프로덕션 서버를 구축 중이지만 WSGI 또는 uWSGI를 사용할지 결정할 수 없습니다. 각 구성의 차이점을 자세히 설명해 주시겠습니까? 어떤 구성이 가장 잘 확장되어야합니까?

미리 감사드립니다



답변

좋아,이 혼란은 여러 소스의 세부 사항이 부족하고 이러한 프로토콜의 이름이 지정되었으며 WSGI가 실제로 무엇인지 때문입니다.

요약:

  1. WSGI와 uwsgi 는 모두 서버가 아닌 ARE 프로토콜입니다. 로드 밸런싱을 위해 웹 서버와 통신하고 특히 순수 HTTP가 제공 할 수없는 추가 기능을 활용하는 데 사용됩니다. 지금까지 Nginx와 Cherokee는이 프로토콜을 구현했습니다.
  2. uWSGI는 서버이고 구현하는 프로토콜 중 하나는 WSGI입니다 (uwsgi 프로토콜을 uWSGI 서버와 혼동하지 마십시오). WSGI는 Python 사양 입니다. WSGI 사양에는 여러 가지 구현이 있으며 응용 프로그램 서버 / 웹 서버 이상의 용도로 사용하기위한 것이지만 WSGI 응용 프로그램 서버가 상당히 적습니다 (즉, 생산 준비가 된 WSGI 호환 웹 서버도있는 CherryPy) , 이미 충분히 혼란스럽지 않았다면!).
  3. uwsgi와 WSGI를 비교하는 것은 오렌지와 사과를 비교하는 것입니다.


답변

일반적으로 기본 웹 서버와 별도의 프로세스에서 Python을 실행하는 것이 가장 좋습니다. 이렇게하면 웹 서버는 정적 콘텐츠를 매우 빠르게 제공하는 많은 작은 스레드를 가질 수 있으며, 별도의 Python 프로세스는 크고 무겁고 각각 자체 Python 인터프리터를 실행합니다. WSGI큰 Python 인터프리터로 nginx 스레드를 모두 부풀리기 때문에 평범한 것은 나쁩니다. flupor gunicorn또는 uWSGIbehind를 사용하는 nginx것이 훨씬 낫습니다 .nginx를 사용하여 단순히 콘텐츠를 제공하고 동적 콘텐츠를 제공하기 위해 가져온 무거운 Python 스레드 수에 관계없이 실행할 작은 가벼운 nginx 스레드 수를 선택할 수 있기 때문입니다. 사람들은 현재 매우 만족해 보이지만 gunicorn이 세 가지 옵션 중 어느 것이 든 잘 작동 할 것입니다.

앞으로도로드가 심각해지기 시작할 때 Python을 다른 서버로 옮길 수 있습니다.


답변

여기 http://flask.pocoo.org/docs/deploying/uwsgi/ 가 혼란을 해소하는 좋은 대답 이라고 생각합니다 . 이 질문은 어리석은 일이 아닙니다. 두 용어를보고 mod_PHP 외부에서 작동하는 방식에 대한 사전 정보가없는 모든 사람에게 발생합니다 (예 : PHP 또는 사람들에 대한 내용 없음).

이 사이트는 nginx의 좋은 배포 예제뿐만 아니라 무엇이 필요한지, 차이점이 무엇인지 실용적인 용어로 설명하는 데 효과적입니다.


편의를 위해 Flask wiki의 설명이 여기에 인용되어 있습니다.

uWSGI는 nginx, lighttpd 및 cherokee와 같은 서버의 배포 옵션입니다. 다른 옵션은 FastCGI 및 독립형 WSGI 컨테이너를 참조하십시오. uWSGI 프로토콜과 함께 WSGI 응용 프로그램을 사용하려면 먼저 uWSGI 서버가 필요합니다. uWSGI는 프로토콜이자 응용 프로그램 서버입니다. 응용 프로그램 서버는 uWSGI, FastCGI 및 HTTP 프로토콜을 제공 할 수 있습니다.

가장 많이 사용되는 uWSGI 서버는 uwsgi이며이 가이드에서 사용할 것입니다. 따라하기 위해 설치했는지 확인하십시오.


답변