[프로그래밍] 가장 빠른 Python 웹 프레임 워크 : wheezy.web

wheezy_web_로고

wheezy.web 로고가 없습니다. 김프에서 이미지를 만들었습니다.

나는 오랫동안 파이썬 프로그래밍을 중단했지만, 그것이 내가 아는 기술을 당신과 공유하는 것을 막지는 않습니다.). 얼마 전에 내가 사용한 웹 프레임 워크 (Web2Py)가 엄청나게 느 렸기 때문에 Python에서 "최고의"웹 프레임 워크를 검색했습니다. 내 연구로 인해 wheezy.web; 그를 아는 사람들은 확실히 저자가 블로그에서 만든 멋진 벤치 마크:

파이썬에서 가장 빠른 웹 프레임 워크

알아, 초당 25.000 개 요청 나머지 프레임 워크와 비교하면 실제 패스입니다. 나는 나를 사용했다 wheezy.web 잠시 동안 나는 그것이 진정한 예술 작품이라고 말해야합니다. 어디를 보든 속도, 단순성, 보안 ... 모든 것이 있습니다. 그리고 그 위에는 한 사람의 작품 인 Andriy Kornatskyy가 있습니다.

  • 와 함께 작동 파이썬 2, 파이썬 3 y 파이 파이. 3이 더 나은 성능을 제공하더라도 2이 충분히 성숙 될 때까지 3를 계속 사용하는 것이 좋습니다.
  • 디자인은 모듈러, 그럼 wheezy.web 더 많은 것 : wheezy.템플릿, wheezy.html, 쌕쌕거림.보안… 원하는 부품을 사용하십시오.
  • 문서 간단하고 이해하기 쉽습니다.
  • 자동 HTML 최적화 (외부 도구를 사용하지 않고 덜 차지하도록 압축).
  • 그렇지 않으면 어떻게 될 수 있습니까? 무료 소프트웨어 및 오픈 소스 ; D.
  • 등 ...

Andriy의 블로그에는 설치 wheezy.web 말리다 o i18n (다국어); 또한 설명합니다 사용하는 방법 wheezy.web Nginx와 함께. 그의 모든 튜토리얼의 단점은 데비안을 사용한다고 가정, 그는 다른 배포판에서 테스트하지 않았기 때문에.

사용하는 경우 페도라 그리고 당신은 관심이 있습니다 wheezy.web, 당신은 운이 좋다! 다음은 튜토리얼을 따르기 위해 필요한 패키지를 설치하는 명령입니다.

sudo dnf install python python-devel python3 python3-devel python-setuptools python-virtualenv libxml2 libxml2-devel libxslt libxslt-devel libmemcached libmemcached-devel memcached memcached-devel gzip ntpdate gettext uwsgi uwsgi-plugin-python socat nginx

Andriy가 설치하도록 제공하는 튜토리얼 wheezy.web Nginx에서는 데비안 용으로 특별히 설계된 스크립트를 사용하므로 다른 시스템을 사용하는 경우 직접 수행해야합니다. 제 경우에는 uWSGI로 충분하므로 시도한 적이 없습니다.

사실은 기존 wheezy.web 다른 프레임 워크를 사용하는 것이 범죄라고 생각하므로 Python으로 작업하는 경우 최소한 한 번 살펴보십시오! 그것에 기인 할 수있는 유일한 단점은 데이터베이스 작업을 용이하게하기 위해 추상화 계층을 가져 오지 않는다는 것입니다 (필요한 것도 아니지만 감사하는 사람들이 있습니다).

그리고 그게 전부입니다. 짧지 만 관련성있는 기사. 더 흥미로운 기술을 약속합니다! 만나요 ~.

그건 그렇고, 호기심, 왜 "위지"라고 불리는 지 아십니까? Andriy는 Debian의 팬입니다. 나는 그것을 남겨둔다;).


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   브루노 카시오

    성능 만이 유일한 요소는 아닙니다. Django와 비교하면 읽을 수 없습니다. 그리고 솔직히, 초당 25000 개의 요청이 실제로 표시되어야하지만 건전하게 작성하기 위해 15000 (django)을 유지하고 나머지 작업은 인프라에 위임하는 것을 선호합니다. 아니, 25000 개의 요청.

    건배! 데이터 주셔서 감사합니다 🙂

    1.    브루노 카시오

      말할 필요도없이 벤치마킹하기 위해 다른 프레임 워크의 이전 버전을 사용합니다.

      1.    라지토

        벤치 마크 기사는 2012 년의 것입니다. 그는 2013 년에 다시 수정하고 확장했으며 그 해의 내용이라고 직접 명시했습니다.«이 글 현재 사용 가능한 최신 버전 (15 년 2013 월 XNUMX 일)»

    2.    라지토

      당신이 언급 한 판독성은 그렇게 나쁘다고 생각하지 않습니다. 나는 프로그래밍의 용이함이 종종 요구된다는 것을 이해하지만 실제로 상당한 차이가 있다고 생각하지 않습니다. 저는 2 년 동안 Web2Py를 사용했으며 사용 가능한 프레임 워크를 사용하는 것이 가장 쉬운 프레임 워크 중 하나라고 확신합니다. 물론 그 성능은 여러면에서 끔찍합니다 ... 벤치 마크 기사에서 Massimo Di Pierro (WebXNUMXPy의 제작자) 자신이 Andriy와 논쟁을 벌이면서 마침내 개선 할 것이 많다는 것을 인정했습니다. IRC에서 Andriy와 이야기하면서 그는 "모든 것을 프레임 워크에 넣고 대부분이 사용되지 않더라도 기능으로 부 풀리는 철학이 널리 받아 들여지고 있습니다."라고 말했습니다. 그가 얼마나 옳았는지 ...

      인프라에 대한 귀하의 의견에 대해서는 귀하의 의견을 부분적으로 공유합니다. 특히 우리가 가장 인기 있고 성숙한 프레임 워크와 아주 최근의 거의 알려지지 않은 프레임 워크에 대해 이야기 할 때 10.000 개의 차이는 매우 많습니다. 내 접근 방식은 항상 최대 효율성과 최대 생산성을 결합하는 것이며, wheezy.web이 최선을 다하고 있다고 생각합니다. 나는 Web2Py (가장 많이), Django, Pyramid 및 wheezy.web을 사용했으며 타의 추종을 불허합니다. 그의 일을하는 방식에 적응하면 그와 분리되지 않습니다. Django의 유일한 장점은 큰 커뮤니티와 인터넷에있는 리소스입니다. 즉, 용이성입니다. wheezy.web은 비교적 새롭고 이에 대해 아는 사람은 거의 없습니다. 쉽게 가면 Web2Py 또는 Django xD가 더 좋습니다.

      확장하고 싶지는 않지만 초당 요청에 대해 이야기 할 때 동시성에 대해 이야기합니다. 동시성을 추구하는 경우 Python은 적절한 언어가 아닙니다. 그것이 Erlang 또는 Haskell과 같은 다른 언어가 사용하는 것입니다 (서두르면 Rust). 그러나 정확히 이런 이유로 인해 wheezy.web이 여가 시간에 사람의 작업과 다른 요소를 사용하여 코드를 거의 차지하지 않아 이러한 성능을 달성 할 수 있었다는 것이 인상적입니다.

      나는 당신이 "건강한 글쓰기"에 대해 말하는 것을 이해하지만 당신은 프로젝트가 장기적으로 얼마나 성장할 수 있는지 결코 모릅니다. 보다 효율적이고 동시적인 도구를 사용하여 간단 할뿐만 아니라 (wheezy.web은 성능에 비해 간단하다고 유지합니다), 언어를 변경하지 않고도 비용을 절감하고 프로젝트를 더 오래 확장 할 수 있습니다. 결국 모든 것은 서버에 지불해야하는 돈에 있습니다. PHP의 성능이 끔찍할 때 PHP에는 매우 유명한 웹 사이트가 있습니다.하지만 그 문제를 어떻게 해결합니까? 더 나은 서버 구매. 다른 접근 방식을 사용하면 더 나은 프로그래밍과 리소스 절약으로 해결됩니다. P.

      그렇게 많이해서 미안 해요. 저는 xDDD에 매우 쉽게 열정을 가지고 있습니다. 문안 인사!

      1.    브루노 카시오

        나는 당신이 의미하는 바를 완벽하게 이해했지만, 정확히 당신이 언급 한 바 때문에, 프로젝트가 성장하는 경향이 있든 아니든, 우리는 데이터베이스 계층이 없기 때문입니다.

        제 관점에서는 어떤 언어와도 결혼하지 않는 것이 가장 좋습니다. 동시성을 원한다면 엔진이 C에서 실행되기 때문에 Node도 사용할 수 있습니다.

        성능에 대해 언급 한 것은 단순히 수직 확장 (PHP의 경우)이 아닙니다. 예를 들어 Facebook은 HHVM을 제공합니다. 예를 들어 내가 읽은 (테스트하지 않은) HHVM은 성능을 50 % 향상시키고 이것은 서버를 구매하지 않습니다. 간단히 말해서, 캐시 레이어가없는 PHP 및 / 또는 기타 최적화 방법은 후자가없는 다른 언어와 마찬가지로 "나쁘다"고, 이름을 지정하는 것은 "더 나은 프로그래밍"이 아닙니다.

        인사말! 🙂

      2.    라지토

        추상화 계층이없는 것을 보자. 그러나 해당 라이브러리 또는 모듈을 사용하여 데이터베이스와 외부에서 작업하면 더 이상 수수께끼가 없습니다. 예를 들어 Web2Py 추상화 계층은 매우 간단하지만 최적화 된 SQL을 작성할 수도 없기 때문에 성능이 크게 떨어집니다. 모든 것이 파이썬에 있습니다. 쉽지만 성능에 대한 대가로.

        나는 HHVM을 알고 있으며 이것이 바로 PHP와 같은 언어가 현대에 끔찍한 이유입니다. Facebook이 Haskell 또는 Erlang에 있었다면 HHVM을 만들 필요가 없었을 것입니다. 캐시 사용, 송수신 파일 압축 등 그들은 모든 개발의 명백한 측면입니다. 문제는 도구가 측정해야한다는 것입니다. :). 그리고 그것을 제공하지 않는 도구가 있습니다. 이것의 가장 좋은 예는 JavaScript입니다.이 경우 적어도 CoffeeScript, Dart 등과 같은 경이가 있습니다. JS로 컴파일됩니다.

        안녕 하쇼을 ¡!

      3.    브루노 카시오

        완전한! 🙂

        한 가지, 하스켈을 사용한다면 페이스 북, 더 정확하게는 Haxl 🙂

      4.    중지

        글쎄요, 저는 web2py를 많이 사용합니다. 이것이 가장 빠른 프레임 워크는 아니라는 데 동의합니다.하지만 그 벤치 마크는 약간 어긋난 것 같습니다. 3 년 전쯤에 이야기 할 때 web2py의 hello dumb 애플리케이션은 매우로드되어 있습니다. 하지만 솔직히 web2py와 django로 작성된 애플리케이션 간의 성능 차이를 경험하지 못했습니다.

        그건 그렇고, web2py에서 SQL을 작성하여 쿼리를 직접 수행 할 수 있습니다.

        인사말.

  2.   우르크

    가장 빠른 웹 프레임 워크이지만 개발, 생산성, 문서화와 같은 몇 가지 예와 기타 주요 요소를 보여주지 않습니다. 장고가 존재하는 상태에서 이것을 사용하지 않는 것이 왜 범죄처럼 보이는지 모르겠습니다 .p

    1.    라지토

      -문서에 이미 예제가 있습니다. 그의 BitBucket 페이지에서도 : https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      -개발 및 생산성 측면에서 개인적으로 "단순함"으로 요약하는 것이 좋은 선택이라고 생각합니다. 아직 더 간단하고 쉬운 프레임 워크는 무엇입니까? 맑은. 그러나 그다지 많은 성능은 아닙니다.
      -xDDD 기사에 문서 링크를 넣었습니다.
      -제가 범죄라고 말하는 이유는 웹 페이지가 모든면에서 가능한 한 효율적이어야한다고 믿기 때문입니다. 앞서 언급했듯이 사용하기 쉬운 프레임 워크가 있지만 wheezy.web을 사용하는 것도 C 프로그래밍이 아닙니다. 더 열심히 노력해야합니다. :).

      안녕하세요 ^^.

  3.   라지토

    그건 그렇고, 누군가가 Wheezy Web이 초당 요청에서만 승리한다고 생각하기가 게으르다면 ... 여기에 몇 가지 벤치 마크가 있습니다.

    http://paste.desdelinux.net/5128 (스팸 필터는 DesdeLinux 너무 많은 링크를 넣을 수는 없습니다)

    이전에 포함하지 않은 것에 대해 사과드립니다. 호기심 xD를 그리기에 충분하다고 생각했습니다. 건배!

  4.   펜리즈

    지금까지 Django에 만족합니다.

    1.    오클레이

      Ehh를 읽을 때마다 화를 내고 PHP 프레임 워크 (Symfony, Yii, CondeIgniter, Phalcon ……… Django가 이미 커뮤니티 (상당히 큰)를 가지고 있고 시간을 낭비하는 대신 바퀴를 재발 명하는 대신 django 팀에 가입하지 않는 훌륭한 프레임 워크 인 경우 @ Lajto와 wheezy.web의 작성자와의 대화에서 왜 그에게 물어 보지 않겠습니까? 장고 팀에 합류 할 생각은 해보신 적 없군요, 젠장 건배 ..

      1.    라지토

        둘 다 웹 프레임 워크이지만 접근 방식이 매우 다릅니다. Django는 무겁고 코드가 많으며 wheezy.web은 가볍고 단순성과 최적화에 전념합니다. 내가 아는 한 wheezy.web은 유일한 모듈 식 Python 웹 프레임 워크입니다 (즉, 모든 코드를 독립적으로 작동 할 수있는 여러 부분으로 분할합니다). 나머지와 구별되는 많은 특성이 있습니다.

        Django에 가입하지 않으시겠습니까? Django는 완전히 다른 접근 방식으로 설계 되었기 때문입니다. Django에 모듈 식 디자인을 어떻게 적용합니까? 실제로 처음부터 다시 만들어야 할 것입니다! 다른 많은 문제와 동일합니다.

        "대규모 커뮤니티에서 잘 작동하는 단일 프레임 워크가 더 좋다"는 느낌은 이해하지만 그렇게 쉽지는 않습니다. 그래서 당신은 이해합니다. 피상적 인 연관성을 만들어서 장고는 데비안과 같고 wheezy.web은 ... 아치? 젠투? 확실히 나쁜 예이지만 xDDD가 이해되었다고 생각합니다.

        안녕 하쇼을 ¡!

  5.   Ulises

    Lajto는 어떻습니까, 안녕하세요 저는 앱을 만들고 wheezy.web 문서를 읽고 처음으로 이해 한 최초의 Python 웹 프레임 워크입니다 🙂 알다시피, 저는 네트워크와 웹에 대한 지식이 많지 않지만 저는 프로그래밍에 특별한 매력이 있습니다.
    Hello World를 공개 서버로 만드는 방법을 알려주시겠습니까? 아마도 그것은 매우 어리석은 질문일지도 모릅니다. 미안하지만 문서에서 그 방법을 찾을 수 없습니다.
    또 다른 질문 인 😉 get 및 post 메소드에서 html 페이지가 아닌 정보를 반환 할 때 정보를있는 그대로 반환합니까? 문자열, 목록 또는 모든 유형의 데이터로. Android의 앱 클라이언트.

    1.    라지토

      안녕하세요 Ulises! wheezy.web을 테스트 해 주셔서 정말 기쁩니다 : D.

      의견에 대해 자신의 구조를 마운트하지 않는 것이 좋습니다. Andriy가 타는 것은 꽤 좋으므로 따라가는 것이 좋습니다. 이 기사에는 Andriy의 블로그에 대한 두 개의 링크가 있으며, 여기서 i18n이있는 단계와 i18n이없는 단계를 설명합니다. 약간 혼란 스러울 경우 아래에서 i18n없이 수행하는 방법을 설명하겠습니다.

      터미널을 열고 다음 네 가지 명령을 실행합니다 ( "test-web"을 프로젝트에 대해 원하는 폴더 이름으로 바꿉니다).

      wget https://bitbucket.org/akorn/wheezy.web/downloads/quickstart-empty.zip

      quickstart-empty.zip 압축 해제

      mv 빠른 시작 비어있는 테스트 웹

      rm 빠른 시작-empty.zip

      PIL을 사용하려면 setup.py 파일을 수정하고 해당 코드의 주석 처리를 제거하십시오. 준비가되면 다음 세 가지 명령을 실행합니다.

      웹 테스트 CD

      환경을 만들다

      env / bin / easy_install uwsgi

      서버가 이미 마운트되었습니다. 빠른 벤치 마크를 수행하여 작동하는지 확인하려면 폴더 내부에서 다음을 실행합니다.

      테스트 코 커버 벤치 마크 만들기

      "etc / development.ini"로 이동하여 "limit-as = 120"을 "limit-as = 512"로 변경하는 것이 좋습니다. 이것은 uWSGI가 "먹이는"RAM의 MB의 수입니다. 따라서 나중에 필요할 경우 늘릴 수 있습니다.

      마지막으로 서버를 열고 싶을 때마다 프로젝트 폴더에서 자신을 찾고 다음을 실행하는 것으로 충분합니다.

      uwsgi를 만들다

      다른 질문에 대해… 기본적으로 서버는 localhost에서 실행되도록 프로그래밍되어 있습니다. 이미 준비가되어 있고 프로덕션의 물리적 서버에서 사용하기를 원하기 때문에 공개로 설정하려면 "src / app.py"를 열고 다음을 찾습니다 : make_server ( ", 8080, main). 첫 번째 매개 변수는 빈 문자열입니다. 그렇죠? 글쎄, 거기에 서버의 IP를 넣었습니다. 두 번째 매개 변수는 사용하려는 포트이며 기본적으로 8080입니다.

      마지막으로 HTML이 아닌 다른 것을 반환하는 것에 대해 말하는 것은 물론 가능합니다! 문서에서 모든 것을 반환하는 방법을 설명합니다. https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      인사! 당신이 나에게 말하는 모든 것;).

      1.    Ulises

        Lajto 정말 고마워요, 당신은 내 의심을 분명히 해주었습니다. 저는 django를 사용해 보았지만 제가 시스템 엔지니어와 django가 아니라고 말했듯이 필요한 것보다 훨씬 많은 것을 가져다 준다고 생각합니다. wheezy.web을 사용하여 안드로이드에서 애플리케이션을 테스트하십시오. 서버와 통신합니다. 매우 간단하지만 매우 빠르고 실용적인 것. 질문이 하나 더 있습니다. 최근에 http / 2에 큰 소란이 있다는 것을 보았습니다. wheezy.web이 작동하는 프로토콜을 어떻게 알 수 있습니까? wheezy.web에서 http / 2를 사용하는 서버를 만들 수 있습니까? 또는 네트워크 및 통신의 전체 문제를 설명 할 수있는 블록 단위의 책, 블로그, 튜토리얼을 추천 해주세요. 다시 한 번 감사합니다.

      2.    라지토

        안녕하세요 Ulises ^^.

        HTTP/2는 아주 최근에 나온 것이고 앞으로 1년 동안은 심각하게 채택되지 않을 것이므로 신경쓰지 마세요 :). 보안을 원하면 HTTPS를 사용하면 됩니다.

        Wheezy Web이 HTTP에 무엇을 사용하는지 잘 모르겠으므로 WSGI라고 가정합니다.

        인사말!

  6.   라지토

    그건 그렇고, 아무것도 아닌 것입니다. 일부 배포판에서는 .python-eggs에 대한 경고 메시지가 나타납니다. 표시되면 아무 일도 일어나지 않지만 짜증나는 경우 다음을 사용하여 제거 할 수 있습니다.

    chmod go = ~ / .python-eggs

    안녕 하쇼을 ¡!

  7.   샌디에고

    Django를 사용하고 있지만 문서에서 어떻게 작동하는지 확인하겠습니다. 공유해 주셔서 감사합니다. 건배

  8.   JD비예가스

    그것은 Windows에서 사용할 수 있습니다 !!!, 튜토리얼이 있습니까 ??

    감사합니다

  9.   라 리타

    안녕하세요, Python에 대한 많은 경험이 있습니다. 그들이 현재에 맞서 노를 젓는 것 같습니다. 이 언어를 위해 발명 된 최고의 것은 Django입니다. 그들은 통계를 만들고 전 세계의 수백 명의 프로그래머와 상담 할 수 있습니다. 그것은 80 % 이상을 줄 것이며 대부분은 틀리지 않습니다. 그들이 조류에 맞서 노를 젓거나 수영하면 조만간 익사 할 것입니다 ...