GAEでwebappを使った場合とDjangoを使った場合のパフォーマンスを計測してみた

2011-07-28
このエントリーをはてなブックマークに追加

フレームワーク使うとモジュール等の読み込みでステップが増え、その分レスポンスが遅れます。これは必然です。

GoogleAppEngine(GAE)でwebappとDjangoを使った場合、どっちが速いのか。多機能になればなるほど遅くなりそうだから当然Djangoの方が遅いだろうが、どれくらいの差があるものか検証してみました。

webapp

def get(self):

path = os.path.join(os.path.dirname(__file__), ‘index.html’)
self.response.out.write(template.render(path, {‘now’:datetime.datetime.now() }))

Django

def index(request):

return render_to_response(‘index.html’, {‘now’: datetime.datetime.now() })

両方共テンプレートに現在時刻を書き出すだけ。いちいちテンプレートのパスを指定してるwebappが不利かな?それぞれ本番環境で5回ずつ計測(ApacheBench)して結果(Time per request、mean)は、

webapp

  1. 46ms
  2. 39ms
  3. 32ms
  4. 37ms
  5. 32ms

Django

  1. 39ms
  2. 33ms
  3. 32ms
  4. 32ms
  5. 44ms

大して変わんないという、驚きの結果でした。本番環境だとキャッシュが効くからフレームワークの重さなんて関係なくなるんですかね。これなら「多機能フレームワークは重いから」っていう理由でマイクロフレームワークを選択することはないかと。まぁこれだけの計測で結論出すのは尚早だとは思いますが。

webappはセッション使えないしFormもないので、そのへんの機能必要なのであればDjangoかな。まぁ速度変わらないのであれば全部Djangoでもいいんですけどね。あ、ちなみにDjangoは以前紹介したGoogle App Engine Helper for Djangoは使用しないで計測しました。

python_selectを使って複数バージョンのPythonを使い分ける

2011-07-23
このエントリーをはてなブックマークに追加

自前のサーバ使うときはPython2.7なんですけど、GAE使うときはPython2.5なので、両方の環境が必要になります。そういう時はpython_selectが便利。今時はVirtualEnv使うのがトレンドなのかもしれないけど。python_selectのインストールは簡単です。

sudo port install python_select

で、

port select –list python

これでインストールされているPythonの一覧が出てきます。ハセテツの環境では以下のようになります。

Available versions for python:

none
python25 (active)
python25-apple
python26-apple
python27

これはPython2.5が現時点では選択されているということです。

sudo port select –set python python27

これでPython2.7が選択され、使用できる様になります。

Selecting ‘python27’ for ‘python’ succeeded. ‘python27’ is now active.

簡単簡単、便利便利。Windowsの場合、Path通し直すしかないのかな。

 

 

Tags: ,

Google App Engine PythonでDjango1.2を使うまでの道のり

2011-07-22
このエントリーをはてなブックマークに追加

GoogleAppEngine(GAE)はPythonが使えるのでぜひ利用させていただくべしなのですが、ずっとDjangoありきで書いてきちゃったもんで、GAEでもDjango使いたいんです。しかも、1.2。

まぁ別にwebapp使えばいいだけの話なんですけど、やはり使い慣れたDjangoが一番ですよね。まぁDjangoじゃヘビーすぎるからもっと軽快にwebappやFlaskでいいじゃんっていうのもありますが。

Pythonは2.5、Djangoは1.2.5を使います。simplejsonも事前にインストールしておきましょう。AppEngineSDKのインストールとかはGoogleさんが詳しく説明してくれています。今回使ったSDKのバージョンは1.5.2。古いとDjango1.2は動かなかったりするようです。

Djangoでプロジェクトを作るときは「django-admin.py startproject hogehoge」ですが、今回は別の手法を取ります。「Google App Engine Helper for Django」という便利なものを使わせて頂きます。事前にダウンロードしておいてください。

  1. 例えば「guestbook」というアプリを作りたいという前提で進めます。任意の場所のguestbookというフォルダを作ります。中は空でいいです。
  2. そして、ダウンロードしてきたGoogle App Engine Helper for Djangoを解凍し、生成されたフォルダの中身をguestbookフォルダの中にコピーします。guestbookフォルダの直下にappengine_djangoフォルダがあればOK。
  3. app.yamlをテキストエディタで開き、一行目の「application: google-app-engine-django」を「application: guestbook」に書き換え、manage.pyとmain.pyの「InstallAppengineHelperForDjango()」を「InstallAppengineHelperForDjango(‘1.2’)」に書き換えます。まぁアプリケーション名と使用するDjangoのバージョンを書くだけですね。
  4. GoogleAppEngineLauncherを起動し、アプリケーションを登録します。新規じゃなくて、既存のアプリケーションを登録してください。ここではguestbookフォルダを選択するだけです。
  5. GoogleAppEngineLauncherでguestbookを選択、「Run」をクリック。左のアイコンが緑の矢印になったら起動成功です。「Browse」をクリックしてDjangoのいつもの「It workd!」が出たら成功!

長くなったので今回はここまで。アプリケーションの追加とかは後日続き書きます。というか、そっから先は普通のDjangoなので不要かな。