2013-05-02 12 views

答えて

31
  1. ライブラリのサポート。すべてのライブラリがPyPyと互換性があるわけではありません。

    実際にpypy manage.py testを実行して壊れているかどうかを確認することをお勧めします。次に、依存関係を整列させる必要があることがわかります。

    http://reinout.vanrees.org/weblog/2011/06/06/django-and-pypy.html

  2. ウェブサーバは

    あなたはApacheでpypy使用することはできません。純粋なPythonのWebサーバー+ nginxを使用する必要があります。 あなたはそれをworking on uwsgiとするかもしれません。

+16

私はpypy + gunicorn + django + nginxを使い、それは魅力的に機能します。 –

8

PyPy wikiはDjangoを互換性のあるものとしてリストアップしていますが、Djangoがどれだけテストされたかについては詳細には触れていません。 CPythonの代わりにPyPyを実行する主要なDjangoデプロイメントは認識していません。より良い質問は、特にDjangoがCPythonで広範にテストされ展開されているため、DjangoアプリケーションのPyPyに切り替える理由です。

PyPyは、計算集約型のタスクに適しています。 Webアプリケーションは通常はありません。 Djangoのベンチマークは、基本的にはCPUを大量に消費するタスクであるテンプレートレンダリングベンチマークです。これは、ボトルネックがI/Oである傾向のあるほとんどのWebアプリケーションの代表ではありません。そのため、PyPyはあなたのサイトを信じさせるほど多くの速度を上げません。

+48

"ウェブサーバーはIOが制限されていますが、遅い言語について心配しないでください"という誤解は明らかに生きています。私は、データベースに重いウェブサイトで費やされた時間の50%が実際に処理中であることを知っています。テンプレートにはレンダリングが必要ですが、クエリーセットにはディープコピーが必要です。責任ある開発者は、DBレイヤーだけでなく、あらゆる場所でパフォーマンスの向上を目指すべきです。 – Thomas

+7

"これは、ボトルネックがI/Oになりがちな*ほとんどの* Webアプリケーションの代表ではありません。"いつものように、ボトルネックがどこにあるかを把握するためにプロファイルを作成する必要があります。それはあなたが最適化されたコードを書くことについて心配する必要がないということを意味しません。責任ある開発者は、アプリのクリティカルパスを最適化します。テンプレートレンダリングベンチマークに基づいた実験的なPythonランタイムに切り替えることはほとんど責任がありません! – CadentOrange

+4

私はcpython2とpypyのいくつかのテストを行いました。パフォーマンステストは、pypyのほうがはるかに高速です。一方、djangoのdbクエリは、cpythonでより速く処理されます。 – francescortiz

関連する問題