[プログラミング]最速のPythonWebフレームワーク:wheezy.web

wheezy_web_ロゴ

ウィージーウェブ ロゴはありません。 GIMPで画像を作成しました。

長い間、私はPythonでのプログラミングをやめましたが、それでも私が知っているテクノロジーをあなたと共有することを妨げることはありません;)。 私が使用したもの(Web2Py)は非常に遅いので、少し前にPythonで「最高の」Webフレームワークを探し始めました。 私の研究は私を ウィージーウェブ; 彼を知っている人は確かに 著者がブログで作成した壮大なベンチマーク:

python-fastest-web フレームワーク

知っている、 25.000秒あたりXNUMXリクエスト 他のフレームワークと比較すると、それは本当のパスです。 私自身が使用しました ウィージーウェブ しばらくの間、それは本当の芸術作品だと言わざるを得ません。 どこを見ても、スピード、シンプルさ、セキュリティ...すべて。 そしてその上に一人の人物、アンドリー・コルナツキーの作品があります。

  • で動作します Pythonの2, Pythonの3 y pypy。 3の方がパフォーマンスが優れている場合でも、2が十分に成熟するまで3を使用し続けることが望ましいです。
  • そのデザインは モジュラー、だから ウィージーウェブ より多くのものがあります: wheezy.template, ウィージー.html, ウィージーセキュリティ…必要な部品を使用してください。
  • ドキュメンテーション シンプルでわかりやすい。
  • 自動HTML最適化 (外部ツールを使用せずに使用する量が少なくなるように圧縮します)。
  • それ以外の場合はどうでしょうか。 無料のソフトウェアとオープンソース ; D。
  • 等...

Andriyのブログには、次のような優れたチュートリアルがあります。 インストール ウィージーウェブ 乾燥する o i18n(多言語)で; また説明します 使い方 ウィージーウェブ Nginxで。 彼のすべてのチュートリアルの欠点は、 Debianを使用していると仮定します、彼は他のディストリビューションでテストしていないので。

使用する場合 フェドーラ そしてあなたは興味があります ウィージーウェブ、 幸運ですね! チュートリアルに従うために必要なパッケージをインストールするコマンドは次のとおりです。

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がインストールするために提供するチュートリアル ウィージーウェブ Nginxでは、Debian専用に設計されたスクリプトを使用するため、別のシステムを使用する場合は自分でスクリプトを実行する必要があります。 私の場合、uWSGIで十分なので、試したことはありません。

真実は既存のものです ウィージーウェブ 別のフレームワークを使用するのは犯罪だと思うので、Pythonを使用している場合は、少なくともそれを確認してください。 これに起因する可能性がある唯一の欠点は、データベースでの作業を容易にするための抽象化レイヤーがないことです(また、そうする必要はありませんが、それを高く評価する人々がいます)。

そしてそれがすべてです。 短いが関連性のある記事。 もっとクールなテクノロジーをお届けすることをお約束します! またね〜。

ちなみに、好奇心、なぜ「wheezy」と呼ばれるのかご存知ですか? AndriyはDebianのファンです。 そのままにしておきます;)。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   ブルーノカシオ

    パフォーマンスだけが要因ではありません。 Djangoと比較すると、かなり読みにくいです。 正直なところ、25000秒あたり15000のリクエストが実際に動作しているのを確認する必要がありますが、健全に書き込むために25000(django)を使用し、残りの作業はインフラストラクチャに委任します。インフラストラクチャは、実際に受信するか、そうではなく、XNUMXリクエスト。

    よろしく! データをありがとう🙂

    1.    ブルーノカシオ

      言うまでもなく、ベンチマークには他のフレームワークの古いバージョンを使用しています...

      1.    ライタ

        ベンチマーク記事は2012年のものです。彼は2013年に再び修正および拡張し、彼自身がその年のものであると指定しました。«この記事の執筆時点で利用可能な最新バージョン(15年2013月XNUMX日)»

    2.    ライタ

      あなたが言っている判読不能性はそれほど悪いとは思いません。 プログラミングのしやすさが求められることが多いことは理解していますが、それほど大きな違いはないと思います。 私はWeb2Pyを2年間使用しましたが、利用可能なフレームワークを使用するのが最も簡単なもののXNUMXつであることを保証します。 もちろん、そのパフォーマンスは多くの点でひどいものです...ベンチマーク記事でMassimo Di Pierro自身(WebXNUMXPyの作成者)はAndriyと議論し、最終的に改善すべきことがたくさんあることを認めています。 IRCでAndriyと話したところ、彼は「すべてをフレームワークに入れ、ほとんどが使用されていなくても機能で膨らませるという広く受け入れられている哲学がある」と語りました。

      インフラストラクチャについてあなたが言うことについて、私はあなたが言うことを部分的に共有します。 特に、最も人気があり成熟したフレームワークと、ごく最近のほとんど知られていないフレームワークについて話す場合、10.000の違いは非常に多くなります。 私のアプローチは常に最大の効率と最大の生産性を組み合わせることであり、wheezy.webがそれを最もうまくやっていると思います。 私はWeb2Py(最も)、Django、Pyramid、wheezy.webを使用しましたが、他の追随を許さないことを保証します。 彼のやり方に適応したら、彼から離れることはありません。 Djangoの唯一の利点は、Djangoが持つ大きなコミュニティと、インターネット全体にあるリソースです。 つまり、簡単です。 wheezy.webは比較するとかなり新しく、それを知っている人はほとんどいません。 簡単に行けば、Web2PyまたはDjangoxDの方が優れています。

      拡張したくありませんが、XNUMX秒あたりのリクエスト数について話すときは、並行性について話します。 並行性が求められる場合、Pythonは適切な言語ではありません。 それがErlangやHaskellのような他の言語の目的です(そしてあなたが私を急いでいるなら、Rust)。 しかし、まさにこの理由から、wheezy.webが非常に少ないコードを占有し、自由時間やその他の要因で人の仕事をしていることが、そのようなパフォーマンスを達成することに成功したことは印象的です。

      「健康的な文章」についてあなたが言っていることは理解できますが、プロジェクトが長期的にどれだけ成長できるかはわかりません。 より効率的で並行したツールを使用するだけでなく、シンプル(wheezy.webはパフォーマンスの点でシンプルであると私は主張します)を使用すると、言語を変更せずにコストを節約し、プロジェクトの規模を長くすることができます。 結局、すべてはあなたがあなたのサーバーに支払わなければならないお金の中にあります。 PHPのパフォーマンスがひどいとき、PHPには非常に有名なWebサイトがあります...しかし、どのようにしてその問題を解決しますか? より良いサーバーを購入する。 他のアプローチでは、プログラミングを改善し、リソースを節約することで解決されます:P。

      あまりに自分を伸ばしてすみません。 私はxDDDに非常に簡単に情熱を注いでいます。 よろしく!

      1.    ブルーノカシオ

        私はあなたが何を意味するのかを完全に理解しましたが、プロジェクトが成長する傾向があるかどうかにかかわらず、私たちはwheezyを使用しているため、データベース層はありません。

        私の見解では、どの言語とも結婚しないことが最善です。 並行性が必要な場合は、Nodeも使用でき、そのエンジンはCで実行されます。

        パフォーマンスについて言及しているのは、垂直方向にスケーリングするだけではありません(PHPの場合)。たとえば、Facebookはパフォーマンスを50%向上させるHHVMを提供しています(テストされていません)。これはサーバーを購入するものではありません。 簡単に言えば、キャッシュレイヤーやその他の最適化方法のないPHPは、後者のない他の言語と同じくらい「悪い」ものです。名前を付けるのは悪いことです。単なる「優れたプログラミング」ではありません。

        ご挨拶!

      2.    ライタ

        見てみましょう、ないのは抽象化レイヤーです。 しかし、対応するライブラリまたはモジュールを使用してデータベースと外部を操作するので、謎はもうありません。 たとえば、Web2Py抽象化レイヤーは非常に単純ですが、最適化されたSQLを記述できないため、パフォーマンスが大幅に低下します。 すべてがPythonです。 簡単ですが、パフォーマンスの見返りに。

        私はHHVMを知っています、そしてそれがPHPのような言語が現代にとってひどい理由です; FacebookがHaskellまたはErlangにある場合、HHVMを作成する必要はありませんでした。 キャッシュを使用したり、送受信されるファイルを圧縮したりします。 それらはあらゆる開発の明らかな側面です。 問題は、ツールが測定する必要があるということです:)。 そして、それを提供しないツールがあります。 これの最も良い例はJavaScriptです...その場合、少なくともCoffeeScript、Dartなどのような不思議があります。 これはJSにコンパイルされます。

        こんにちは!

      3.    ブルーノカシオ

        完璧です! 🙂

        ただ一つ、haskell、より正確にはHaxlを使用している場合はFacebook🙂

      4.    セザール

        ええと、私はweb2pyをよく使用します。これは最速のフレームワークではないことに同意しますが、そのベンチマークは少しずれているようです。3年前の話をすると、web2pyのhellodumbアプリケーションは非常に負荷がかかります。他のフレームワークとは異なりますが、正直なところ、web2pyとdjangoで記述されたアプリケーション間のパフォーマンスのひどい違いは経験していません。

        ちなみに、web2pyでは、SQLを記述してクエリを直接実行できるかどうか。

        ご挨拶。

  2.   えっと

    あなたが言う最速のWebフレームワークですが、例や、開発、生産性、ドキュメントなどの他の重要な要素は示していません。 djangoが存在するので、これを使用しないことが犯罪であると思われる理由がわかりません:p

    1.    ライタ

      -ドキュメントにはすでに例があります。 彼のBitBucketページでも: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
      -開発と生産性については、個人的には「シンプルさ」でまとめるのがいいと思います。 まだシンプルで簡単なフレームワークは何ですか? 承知しました。 しかし、それほどのパフォーマンスではありません。
      -ドキュメントへのリンクを記事xDDDに配置しました。
      -それが犯罪だと私が言う理由は、ウェブページがあらゆる点で可能な限り効率的であるべきだと私が信じているからです。 前に述べたように、使いやすいフレームワークがありますが、wheezy.webを使用してもCでプログラミングすることはできません。もっと頑張る必要があります:)。

      ご挨拶^^。

  3.   ライタ

    ちなみに、誰かが見つけるのが面倒で、Wheezy WebがXNUMX秒あたりのリクエスト数でしか勝てないと思った場合...ここにいくつかのベンチマークがあります:

    http://paste.desdelinux.net/5128 (スパムフィルターは DesdeLinux そんなにリンクは貼れません)

    以前にそれらを含めなかったことをお詫びします。 好奇心xDを描くにはXNUMXつで十分だと思いました。 よろしく!

  4.   Fenriz

    これまでのところ、Djangoに満足しています。

    1.    オクレイ

      ええと、これらのことを読むたびに私は腹を立てます、それはphpフレームワーク(Symfony、Yii、CondeIgniter、Phalcon………wdf !!)だけだと思いました。 Djangoにすでにコミュニティがあり(かなり大きい)、優れたフレームワークである場合は、時間を無駄にするのではなく、djangoチームに参加しないでください。@ Lajtoがwheezy.webの作成者との会話で、彼に質問してみませんか。 djangoチームに参加することを考えたことはありません、くそー。乾杯..

      1.    ライタ

        どちらもWebフレームワークですが、アプローチは大きく異なります。 Djangoは重く、コードが多く、wheezy.webは軽量ですが、シンプルさと最適化に取り組んでいます。 私の知る限り、wheezy.webは唯一の真にモジュール化されたPython Webフレームワークです(つまり、すべてのコードを独立して機能するさまざまな部分に分割します)。 それは他とそれを区別する多くの特徴を持っています。

        Djangoに参加してみませんか? Djangoはまったく異なるアプローチで設計されているためです。 モジュラーデザインをDjangoにどのように適用しますか? それは実質的に最初から作り直さなければならないでしょう! 他の多くの問題でも同じです。

        「大規模なコミュニティでうまく機能する単一のフレームワークの方が良い」という気持ちは理解していますが、それほど簡単ではありません。 つまり、表面的な関連付けを行うことで、DjangoはDebianのようになり、wheezy.webは…Archのようになります。 Gentoo? これは間違いなく悪い例ですが、xDDDは理解されていると思います。

        こんにちは!

  5.   ユリシーズ

    Lajtoはどうですか、私はアプリを作っています。wheezy.webのドキュメントを読みました。これは、初めて理解した最初のPython Webフレームワークです🙂ご覧のとおり、私はネットワークとWebについてあまり知識がありませんが、私はプログラミングに特別な魅力があります。
    helloworldをパブリックサーバーに変更する方法を教えてください。 非常にばかげた質問かもしれませんが、申し訳ありませんが、ドキュメントでその方法を見つけることができません。
    別の質問、😉getメソッドとpostメソッドでは、htmlページではない情報を返すので、情報をそのまま返しますか? 文字列、リスト、または任意のタイプのデータとして。 クライアントはAndroidのアプリです。

    1.    ライタ

      こんにちはユリシーズ! wheezy.webをテストしてくれてうれしいです:D。

      コメントについては、独自の構造をマウントしないことを強くお勧めします。 アンドリーが乗るのはかなり良いので、それに従うことをお勧めします。 この記事には、Andriyのブログへの18つのリンクがあり、i18nを使用した場合と使用しない場合の手順を説明しています。 少し紛らわしい場合は、i18nなしでそれを行う方法を以下に説明します。

      ターミナルを開き、次のXNUMXつのコマンドを実行します(「test-web」をプロジェクトに必要なフォルダーの名前に置き換えます)。

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

      クイックスタートを解凍-empty.zip

      mvクイックスタート-空のテスト-ウェブ

      rmquickstart-empty.zip

      PILを使用する場合は、setup.pyファイルを変更し、対応するコードのコメントを解除します。 準備ができたら、次のXNUMXつのコマンドを実行します。

      web-test-cd

      環境を作る

      env / bin / easy_install uwsgi

      サーバーはすでにマウントされています。 簡単なベンチマークを実行して、フォルダー内で機能するかどうかを確認する場合は、次のコマンドを実行します。

      テストノーズカバーベンチマークを作成する

      「etc / development.ini」に移動し、「limit-as = 120」を「limit-as = 512」に変更することをお勧めします。 これは、RAM uWSGIが「消費」するMB数であるため、将来、必要に応じて増やすことができます。

      最後に、サーバーを開きたいときはいつでも、プロジェクトフォルダーに自分を配置して実行するだけで十分です。

      uwsgiを作る

      その他の質問について...デフォルトでは、サーバーはローカルホストで実行するようにプログラムされています。 すでに準備ができており、本番環境の物理サーバーで使用するために公開する場合は、「src / app.py」を開いて、make_server( "、8080、main)を見つけます。 最初のパラメータは空の文字列ですよね? さて、あなたはあなたのサーバーのIPをそこに置きます。 8080番目のパラメーターは、使用するポートであり、デフォルトではXNUMXです。

      最後に、HTML以外のものを返すことについてあなたが言うことは、もちろん可能です! ドキュメントでは、すべてを返す方法を説明しています。 https://pythonhosted.org/wheezy.web/userguide.html#web-handlers

      挨拶! あなたが私に言うことは何でも;)。

      1.    ユリシーズ

        Lajtoに感謝します、あなたは本当に私の疑問を明らかにしました、私はdjangoで試しましたが、私はシステムエンジニアではなく、djangoだと言ったので、必要以上のものをもたらすと思います。wheezy.webを使用してAndroidでアプリケーションをテストしてくださいサーバーと通信します。 非常にシンプルですが、非常に高速で実用的なものです。 もう2つ質問があります。最近、http / 2に大きな騒ぎがあったことがわかりました。どのプロトコルで動作するかを知るにはどうすればよいですか?wheezy.webでhttp / XNUMXを使用するサーバーを作成できますか? または、ネットワークと通信のすべての問題を説明できるブロックになっている本、ブログ、チュートリアルを私に勧めてください。 再度、感謝します。

      2.    ライタ

        こんにちはまたユリシーズ^^。

        HTTP / 2はごく最近のものであり、今後1年間は真剣に採用されないので、気にしないでください:)。 セキュリティが必要な場合は、HTTPSを使用してください。

        Wheezy WebがHTTPに何を使用しているかわからないので、WSGIになると思います。

        ご挨拶

  6.   ライタ

    ちなみに、ちょっとしたことはありません。 一部のディストリビューションでは、.python-eggsに関する警告メッセージが表示されます。 表示されても何も起こりませんが、気になる場合は、次の方法で削除できます。

    chmod go =〜/ .python-eggs

    こんにちは!

  7.   ディエゴ

    私はDjangoを使用していますが、ドキュメントをチェックしてどのように機能するかを確認します。 共有していただきありがとうございます。 よろしく

  8.   JDVレガス

    それはウィンドウズから使用することができます!!!、チュートリアルはありますか?

    感謝

  9.   ラリタ

    こんにちは私たちはPythonでたくさんの経験があります。 彼らは流れに逆らって漕いでいるように私には思えます。 この言語のためにこれまでに発明された最高のものはDjangoです。 彼らは統計を作成し、世界中の何百人ものプログラマーに相談することができます。それはあなたに80%以上を与えるでしょう、それらのほとんどは間違っていません。 彼らが流れに逆らって漕いだり泳いだりすると、遅かれ早かれ彼らは溺れるでしょう...