[Lập trình] Khuôn khổ web Python nhanh nhất: wheezy.web

khò khè_web_logo

khò khè.web nó không có logo; Tôi đã tạo hình ảnh trong GIMP.

Trong một thời gian dài, tôi đã ngừng lập trình bằng Python, nhưng điều đó không ngăn cản tôi chia sẻ những công nghệ mà tôi biết với bạn;). Cách đây một thời gian, tôi đã bắt đầu tìm kiếm khung công tác web "tốt nhất" bằng Python, vì khung công tác tôi sử dụng (Web2Py) chậm kinh khủng. Nghiên cứu của tôi đã dẫn tôi đến khò khè.web; những người biết anh ấy chắc chắn đã làm như vậy thông qua tiêu chuẩn ngoạn mục được thực hiện bởi tác giả trên blog của mình:

python-nhanh nhất-web-framework

Tôi biết, 25.000 yêu cầu mỗi giây so với phần còn lại của các khuôn khổ, nó là một vượt qua thực sự. Bản thân tôi đã sử dụng khò khè.web trong một thời gian và tôi phải nói rằng đó là một tác phẩm nghệ thuật thực sự. Bất cứ nơi nào bạn nhìn vào nó: tốc độ, đơn giản, bảo mật ... Mọi thứ. Và trên đó là tác phẩm của một người duy nhất: Andriy Kornatskyy.

  • Làm việc với Python 2, Python 3 y cây anh túc. Ngay cả khi 3 cho hiệu suất tốt hơn, bạn nên tiếp tục sử dụng 2 cho đến khi 3 đủ chín.
  • Thiết kế của nó là mô-đun, vậy khò khè.web là những thứ khác: khò khè.template, khò khè.html, khò khè.an ninh… Sử dụng các phần bạn muốn.
  • Tài liệu đơn giản và dễ hiểu.
  • Tối ưu hóa HTML tự động (nén nó để nó chiếm ít hơn mà không cần sử dụng các công cụ bên ngoài).
  • Làm thế nào nó có thể được khác, nó là phần mềm miễn phí và mã nguồn mở ; D.
  • khác ...

Trên blog của Andriy có các hướng dẫn tuyệt vời cho cài đặt khò khè.web để khô o với i18n (nhiều ngôn ngữ); cũng giải thích cách sử dụng khò khè.web với Nginx. Nhược điểm của tất cả các hướng dẫn của anh ấy là giả sử bạn sử dụng Debian, vì anh ấy đã không thử nghiệm trên các bản phân phối khác.

Nếu bạn sử dụng Fedora và bạn quan tâm khò khè.web, Bạn thật may mắn! Đây là lệnh sẽ cài đặt các gói cần thiết để có thể làm theo hướng dẫn của nó:

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

Hướng dẫn mà Andriy cung cấp để cài đặt khò khè.web với Nginx sử dụng tập lệnh được thiết kế riêng cho Debian, vì vậy bạn sẽ phải tự thực hiện nếu sử dụng hệ thống khác. Trong trường hợp của tôi, uWSGI là đủ đối với tôi, vì vậy tôi chưa bao giờ thử nó.

Sự thật là đang tồn tại khò khè.web Tôi thấy thật tội khi sử dụng một khung công tác khác, vì vậy nếu bạn làm việc với Python, ít nhất hãy xem qua nó! Nhược điểm duy nhất có thể được quy cho nó là nó không mang lại bất kỳ lớp trừu tượng nào để tạo thuận lợi cho công việc với cơ sở dữ liệu (cũng không cần thiết, nhưng có những người đánh giá cao nó).

Và đó là tất cả. Một bài báo ngắn, nhưng có liên quan. Tôi hứa sẽ mang đến nhiều công nghệ thú vị hơn nữa! Hẹn gặp lại bạn ~.

Nhân tiện, một sự tò mò, bạn có biết tại sao nó được gọi là "wheezy" không? Andriy là một fan hâm mộ của Debian. Tôi để nó ở đó;).


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Bruno cascio dijo

    Hiệu suất không phải là yếu tố duy nhất. So với Django, nó khá khó đọc. Và thành thật mà nói, 25000 yêu cầu mỗi giây sẽ được thực hiện, nhưng tôi thích ở lại với 15000 (django) viết lành mạnh và phần còn lại của công việc ủy ​​thác nó cho cơ sở hạ tầng, đây THỰC SỰ là cái sẽ nhận được hoặc không, 25000 yêu cầu.

    Chúc mừng! Cảm ơn vì dữ liệu 🙂

    1.    Bruno cascio dijo

      Không cần phải nói, để làm điểm chuẩn, tôi sử dụng các phiên bản cũ của các khung công tác khác ...

      1.    lajto dijo

        Bài báo chuẩn là từ năm 2012. Anh ấy đã sửa đổi và mở rộng nó một lần nữa vào năm 2013 và bản thân anh ấy chỉ rõ rằng chúng có từ năm đó: «Các phiên bản mới nhất có sẵn kể từ ngày viết này (ngày 15 tháng 2013 năm XNUMX)»

    2.    lajto dijo

      Tính không hợp pháp mà bạn đề cập, tôi không nghĩ là xấu. Tôi hiểu rằng tính dễ lập trình thường được tìm kiếm, nhưng tôi không nghĩ rằng có sự khác biệt thực sự đáng kể. Tôi đã sử dụng Web2Py trong một năm và tôi đảm bảo với bạn rằng đây là một trong những framework dễ sử dụng nhất hiện có. Tất nhiên, hiệu suất của nó rất khủng khiếp theo nhiều cách ... Trong bài viết chuẩn, chính Massimo Di Pierro (người tạo ra Web2Py) đã có một cuộc tranh luận với Andriy, trong đó cuối cùng anh ấy thừa nhận rằng còn nhiều điều cần cải thiện; nói chuyện với Andriy trên IRC, anh ấy nói với tôi "có một triết lý được chấp nhận rộng rãi là đưa mọi thứ vào các khuôn khổ và làm đầy chúng bằng các tính năng ngay cả khi hầu hết không được sử dụng", và anh ấy đã đúng như thế nào ...

      Về những gì bạn nói về cơ sở hạ tầng, tôi chia sẻ một phần những gì bạn nói; Sự khác biệt 10.000 là RẤT NHIỀU, đặc biệt là khi chúng ta nói về khuôn khổ phổ biến và trưởng thành nhất so với một khuôn khổ rất gần đây và ít được biết đến. Cách tiếp cận của tôi luôn là kết hợp hiệu quả tối đa với năng suất tối đa và tôi nghĩ wheezy.web làm được điều đó tốt nhất. Tôi đã sử dụng Web2Py (nhiều nhất), Django, Pyramid và wheezy.web và tôi đảm bảo với bạn rằng nó không có đối thủ. Một khi bạn đã thích nghi với cách làm việc của anh ấy, bạn sẽ không tách rời khỏi anh ấy. Những lợi thế duy nhất của Django là cộng đồng lớn mà nó có và các nguồn tài nguyên có trên Internet; nghĩa là: dễ dàng. so với wheezy.web thì khá mới và rất ít người biết về nó; nếu bạn dễ dàng, tốt hơn Web2Py hoặc Django xD.

      Tôi không muốn mở rộng, nhưng khi chúng ta nói về yêu cầu mỗi giây, chúng ta nói về đồng thời. Nếu tìm kiếm sự đồng thời, Python không phải là ngôn ngữ thích hợp. Đó là những gì các ngôn ngữ khác như Erlang hoặc Haskell dành cho (và nếu bạn vội vàng cho tôi, Rust). Nhưng chính xác vì lý do này, thật ấn tượng khi wheezy.web, chiếm quá ít mã, là công việc của một người trong thời gian rảnh và một loạt các yếu tố khác, đã đạt được hiệu suất như vậy.

      Tôi hiểu những gì bạn nói về "lối viết lành mạnh", nhưng bạn không bao giờ biết được một dự án có thể phát triển bao nhiêu trong dài hạn. Sử dụng các công cụ đồng thời và hiệu quả hơn, cũng như đơn giản (tôi cho rằng wheezy.web đơn giản đối với hiệu suất mà nó có), tiết kiệm tiền và tăng quy mô dự án lâu hơn mà không cần thay đổi ngôn ngữ. Cuối cùng thì mọi thứ đều bằng tiền mà người ta phải trả cho máy chủ của mình. Có những trang web rất nổi tiếng về PHP, khi PHP có hiệu suất rất khủng khiếp ... Nhưng bạn giải quyết vấn đề đó như thế nào? Mua máy chủ tốt hơn. Với cách làm khác thì giải quyết bằng cách lập trình tốt hơn và tiết kiệm tài nguyên: P.

      Tôi xin lỗi vì đã mở rộng bản thân quá nhiều. Tôi rất dễ đam mê xDDD. Chúc mừng!

      1.    Bruno cascio dijo

        Tôi hoàn toàn hiểu ý bạn, nhưng chính xác vì những gì bạn đề cập, nếu một dự án có xu hướng phát triển hay không, vì chúng tôi đi với wheezy không có lớp cơ sở dữ liệu.

        Theo quan điểm của tôi, tốt nhất là không cưới bất cứ điều tiếng gì. Nếu bạn muốn đồng thời, bạn cũng có thể sử dụng Node, engine của nó chạy bằng C.

        Những gì bạn đề cập về hiệu suất, không chỉ là mở rộng theo chiều dọc (trường hợp của PHP), Facebook ví dụ cung cấp HHVM, mà tôi đã đọc (chưa được thử nghiệm) giúp cải thiện hiệu suất lên 50% và đây không phải là mua máy chủ. Nói một cách đơn giản, PHP không có các lớp bộ nhớ cache và / hoặc các cách tối ưu hóa khác cũng "tệ" như bất kỳ ngôn ngữ nào khác mà không có ngôn ngữ sau và ý tôi là tệ khi đặt tên cho chúng, nó không chỉ là "lập trình tốt hơn".

        Chúc mừng! 🙂

      2.    lajto dijo

        Hãy xem, không có lớp trừu tượng. Nhưng bạn sử dụng thư viện hoặc mô-đun tương ứng để làm việc với cơ sở dữ liệu của bạn và bên ngoài, không có gì bí ẩn hơn. Ví dụ, lớp trừu tượng Web2Py rất đơn giản, nhưng hiệu suất giảm đáng kể vì bạn thậm chí không thể viết SQL được tối ưu hóa. Mọi thứ đều bằng Python; dễ dàng, nhưng đổi lại hiệu suất.

        Tôi biết HHVM và đó chính là lý do tại sao các ngôn ngữ như PHP là khủng khiếp đối với thời hiện đại; nếu Facebook ở Haskell hoặc Erlang thì không cần thiết phải tạo HHVM. Sử dụng bộ nhớ cache, nén các tệp được gửi và nhận, v.v. chúng là những khía cạnh hiển nhiên của bất kỳ sự phát triển nào. Vấn đề là công cụ phải đo lường :). Và có những công cụ không cung cấp nó. Ví dụ tốt nhất về điều này là JavaScript ... Trong trường hợp đó ít nhất cũng có những điều kỳ diệu như CoffeeScript, Dart, v.v. biên dịch sang JS.

        ¡Saludos!

      3.    Bruno cascio dijo

        Hoàn hảo! 🙂

        Chỉ một điều, facebook nếu bạn sử dụng haskell, chính xác hơn là Haxl 🙂

      4.    Thôi dijo

        Chà, tôi sử dụng web2py rất nhiều, tôi đồng ý rằng nó không phải là khung công tác nhanh nhất, nhưng điểm chuẩn đó có vẻ hơi lạc lõng, thậm chí nhiều hơn khi chúng ta đang nói về 3 năm trước, ứng dụng xin chào ngu ngốc của web2py rất được tải so với các khung công tác khác, nhưng thành thật mà nói tôi chưa trải nghiệm sự khác biệt kinh khủng đó về hiệu suất giữa các ứng dụng của tôi được viết bằng web2py và django.

        Nhân tiện, trong web2py nếu bạn có thể viết SQL để thực hiện các truy vấn trực tiếp.

        Chúc mừng.

  2.   uKh dijo

    Khuôn khổ web nhanh nhất mà bạn nói, nhưng bạn không hiển thị một số ví dụ và các yếu tố chính khác, chẳng hạn như phát triển, năng suất, tài liệu. Django hiện có, chả hiểu sao hình như không xài cái này thì tội lắm: p

    1.    lajto dijo

      - Đã có các ví dụ trong tài liệu. Trên trang BitBucket của anh ấy cũng có: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      - Về phát triển và năng suất, cá nhân tôi nghĩ rằng tóm tắt nó trong "sự đơn giản" là một lựa chọn tốt. Khung công tác đơn giản và dễ dàng hơn là gì? Thông thoáng. Nhưng không phải với hiệu suất nhiều như vậy.
      - Tôi đã đặt liên kết đến tài liệu trong bài báo xDDD.
      - Tại sao tôi nói rằng đó là một tội phạm là bởi vì tôi tin rằng một trang web phải hiệu quả nhất có thể, theo mọi cách. Như đã đề cập trước đây, có những framework dễ sử dụng hơn, nhưng sử dụng wheezy.web cũng không phải là lập trình C. Bạn chỉ cần cố gắng hơn thôi :).

      Xin chào các bạn ^^.

  3.   lajto dijo

    Nhân tiện, trong trường hợp bất kỳ ai lười tìm hiểu và nghĩ rằng Wheezy Web chỉ thắng trong các yêu cầu mỗi giây ... Dưới đây là một số điểm chuẩn khác:

    http://paste.desdelinux.net/5128 (bộ lọc thư rác của DesdeLinux Nó sẽ không cho phép tôi đặt nhiều liên kết như vậy)

    Tôi xin lỗi vì đã không bao gồm chúng trước đây. Tôi nghĩ rằng một cái là đủ để thu hút sự tò mò xD. Chúc mừng!

  4.   cỏ dại dijo

    Cho đến nay hạnh phúc với Django.

    1.    oclay dijo

      Ehh mỗi lần tôi đọc những thứ này nó làm tôi tức giận, tôi nghĩ nó chỉ có với các framework php (Symfony, Yii, CondeIgniter, Phalcon ……… wdf !!). Nếu Django đã có một cộng đồng (khá lớn) và là một khuôn khổ tuyệt vời, tại sao thay vì lãng phí thời gian để phát minh lại bánh xe, bạn không tham gia vào nhóm django. @ Lajto trong cuộc trò chuyện của bạn với tác giả của wheezy.web tại sao bạn không hỏi anh ấy Nếu bạn chưa bao giờ nghĩ đến việc tham gia đội django, chết tiệt. Chúc mừng ..

      1.    lajto dijo

        Mặc dù cả hai đều là các khuôn khổ web, chúng có cách tiếp cận rất khác nhau. Django nặng, nó có rất nhiều mã, trong khi wheezy.web nhẹ, nó cam kết đơn giản và tối ưu hóa. Theo hiểu biết của tôi, wheezy.web là khung công tác web Python mô-đun thực sự duy nhất (nghĩa là nó chia tất cả mã của nó thành các phần khác nhau có thể hoạt động độc lập). Nó có nhiều đặc điểm để phân biệt nó với phần còn lại.

        Tại sao không tham gia Django, bạn nói? Bởi vì Django đã được thiết kế với những cách tiếp cận hoàn toàn khác. Làm thế nào để bạn áp dụng một thiết kế mô-đun cho Django? Nó sẽ phải được làm lại từ đầu! Với nhiều vấn đề khác cũng vậy.

        Tôi hiểu rằng cảm giác "tốt hơn một framework duy nhất hoạt động tốt với một cộng đồng lớn", nhưng nó không dễ dàng như vậy. Vì vậy, bạn hiểu không, bằng cách tạo một liên kết hời hợt, Django giống như thể nó là Debian và wheezy.web như thể nó là… Arch? Gentoo? Chắc chắn là một ví dụ xấu, nhưng tôi nghĩ xDDD được hiểu.

        ¡Saludos!

  5.   Ulises dijo

    Còn Lajto thì sao, tôi đang làm một ứng dụng và tôi đã đọc tài liệu wheezy.web và đó là khung công tác web python đầu tiên mà tôi hiểu lần đầu tiên 🙂 Bạn thấy đấy, tôi không có nhiều kiến ​​thức về mạng và web, nhưng tôi có một sức hút đặc biệt với lập trình .
    Bạn có thể giúp tôi cách sửa đổi hello world để biến nó thành một máy chủ công cộng không? Có thể đó là một câu hỏi rất ngớ ngẩn, xin lỗi, nhưng tôi không thể tìm thấy trong tài liệu cách thực hiện.
    Một câu hỏi khác, trong các phương thức lấy và đăng, vì tôi trả về thông tin không phải là trang html, tôi có trả lại thông tin như hiện tại không? dưới dạng một chuỗi hoặc một danh sách hoặc bất kỳ loại dữ liệu nào. Khách hàng một ứng dụng trong Android.

    1.    lajto dijo

      Xin chào Ulises! Tôi rất vui vì bạn đang thử nghiệm wheezy.web: D.

      Về những gì bạn nhận xét, tôi thực sự khuyên bạn không nên gắn kết cấu trúc của riêng mình. Một trong những chuyến đi của Andriy khá tốt, vì vậy tôi khuyên bạn nên đi theo nó. Trong bài viết có hai liên kết đến blog của Andriy, nơi anh ấy giải thích các bước với i18n và không có i18n. Trong trường hợp hơi khó hiểu, tôi sẽ giải thích cách thực hiện mà không cần i18n bên dưới:

      Mở một thiết bị đầu cuối và chạy bốn lệnh sau (thay thế "test-web" bằng tên của thư mục bạn muốn cho dự án của mình):

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

      giải nén quickstart-empty.zip

      mv khởi động nhanh-trống thử nghiệm-web

      rm quickstart-empty.zip

      Nếu bạn muốn sử dụng PIL, hãy sửa đổi tệp setup.py và bỏ ghi chú mã tương ứng. Khi bạn đã sẵn sàng, hãy chạy ba lệnh sau:

      web-test-cd

      làm cho env

      env / bin / easy_install uwsgi

      Máy chủ của bạn đã được gắn kết. Nếu bạn muốn thực hiện một điểm chuẩn nhanh để xem nó có hoạt động hay không, đang ở bên trong thư mục, bạn chạy:

      thực hiện kiểm tra điểm chuẩn che mũi

      Tôi khuyên bạn nên truy cập "etc / development.ini" và thay đổi "limit-as = 120" thành "limit-as = 512". Đây là lượng RAM uWSGI sẽ "ngốn" hết nên trong tương lai có thể tăng lên nếu cần thiết.

      Cuối cùng, mỗi khi bạn muốn mở máy chủ của mình, bạn chỉ cần tìm trong thư mục dự án của mình và thực thi:

      làm uwsgi

      Về các câu hỏi khác ... Theo mặc định, máy chủ được lập trình để chạy trên localhost. Nếu bạn muốn đặt nó ở chế độ công khai, vì bạn đã có nó sẵn sàng và muốn sử dụng nó trên một máy chủ vật lý trong quá trình sản xuất, chỉ cần mở "src / app.py" và xác định vị trí sau: make_server (", 8080, main). Tham số đầu tiên là một chuỗi rỗng, phải không? Vâng, ở đó bạn đặt IP của máy chủ của bạn. Tham số thứ hai là cổng bạn muốn sử dụng, theo mặc định là 8080.

      Cuối cùng, những gì bạn nói về việc trả về thứ gì đó khác ngoài HTML, tất nhiên là bạn có thể! Trong tài liệu, họ giải thích cách trả lại mọi thứ: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      Một lời chào! Có gì thì nói cho tôi biết;).

      1.    Ulises dijo

        Cảm ơn bạn rất nhiều Lajto, bạn đã thực sự làm sáng tỏ những nghi ngờ của tôi, tôi đã thử với django nhưng như tôi đã nói với bạn rằng tôi không phải là kỹ sư hệ thống và django tôi nghĩ nó mang lại nhiều hơn những gì tôi cần, hãy sử dụng wheezy.web để kiểm tra một ứng dụng trong Android và giao tiếp với máy chủ . Một cái gì đó rất đơn giản nhưng khá nhanh chóng và thiết thực. Xin hỏi thêm một câu hỏi nữa, gần đây tôi thấy có một rắc rối lớn với http / 2, làm cách nào để biết wheezy.web hoạt động trên giao thức nào? Tôi có thể tạo một máy chủ sử dụng http / 2 trong wheezy.web không? Hoặc giới thiệu cho tôi một cuốn sách, blog, hướng dẫn nằm trong các khối có thể giải thích toàn bộ vấn đề của mạng và truyền thông. Cảm ơn, một lần nữa.

      2.    lajto dijo

        Xin chào một lần nữa Ulises ^^.

        HTTP / 2 là rất gần đây và sẽ không được chấp nhận nghiêm túc trong 1 năm nữa, vì vậy đừng bận tâm đến nó :). Nếu bạn muốn bảo mật, hãy sử dụng HTTPS và thế là xong.

        Tôi không chắc Wheezy Web sử dụng gì cho HTTP, vì vậy tôi cho rằng nó sẽ là WSGI.

        Chúc mừng!

  6.   lajto dijo

    Nhân tiện, một chút gì đó không có gì. Trên một số bản phân phối xuất hiện thông báo CẢNH BÁO về .python-egg. Không có gì xảy ra nếu nó xuất hiện, nhưng nếu nó làm phiền bạn, bạn có thể xóa nó bằng:

    chmod go = ~ / .python-egg

    ¡Saludos!

  7.   Diego dijo

    Tôi đang sử dụng Django, nhưng tôi sẽ kiểm tra tài liệu để xem nó hoạt động như thế nào. Cám ơn vì đã chia sẻ. Chúc mừng

  8.   JDVillegas dijo

    Nó có thể được sử dụng từ windows !!!, có một hướng dẫn?

    Cảm ơn

  9.   lalita dijo

    Xin chào, chúng tôi có rất nhiều kinh nghiệm với Python. Đối với tôi, dường như họ đang chèo chống hiện tại. Điều tốt nhất từng được phát minh cho ngôn ngữ này là Django. Họ có thể thống kê và tham khảo ý kiến ​​của hàng trăm lập trình viên từ khắp nơi trên thế giới, nó sẽ cho bạn hơn 80%, hầu hết đều không sai. Nếu họ chèo thuyền hoặc bơi ngược dòng nước, sớm muộn gì họ cũng sẽ chết đuối ...