Amazon.co.jp ウィジェット
スポンサードリンク

2009年02月11日

Pylons on Google App Engine

Pylons ベースの AppEngine アプリの開発を再開。 Pylons を 0.9.6 から 0.9.7rc4 に上げ、 AppEngine の SDK も1.1.9 を用いた。 以下は、とりあえず動作させるまでのメモ。

Application & Sourcecode

まずは Pylons 0.9.7rc4 を動かす

Mike Orr の書いた "Creating a Pylons application for Google App Engine" の通りに行えばよい。

基本ステップは以下の通り

  1. SDK をダウンロード
  2. appengine-monkey をダウンロードし、開発環境を作成
  3. Pylons をインストール
  4. Pylons ベースのプロジェクトを作成
  5. 後述の注意書きに従ってもろもろ調整
  6. 本番環境にデプロイ

以下、特に注意すべきポイント。

  • SDK で用意されているWebOb はバージョンが低く、conflict するので削除
  • simplejson の speedups は利用できないので削除
  • Pylons アプリを作成後、 environment.py で以下の項目をコメントアウト
    
    # module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
       
  • paste-deploy.py の中で、 "import site" の場所を書き換える(上記マニュアルには書かれていないので注意)
    
    import site
    site = reload(site)
    import wsgiref.handlers
       
    これら3行をそれぞれ必要とされる場所の直前に移す。
  • app.yaml で skip_files をコメントアウト。ただし以下の場所を修正。
    
    - ^lib/python2.5/[^/]+$|
    + ^lib/python2.5/(?!site-packages)|
       
  • SDK では zip import がサポートされているが、Pylons が利用する pkg_resources が SDK の利用している py_zipimport と相性が悪いため、egg はすべて解凍して利用する。(easy_install 時に "-Z" オプションを付ける)
  • 1000 ファイル制限を乗り越えるため、Pylons パッケージ下の tests ディレクトリと、pylons.templates を削除する。(手間の割に効果が大きい)

ここまでやれば、 Pylons 0.9.7 のデフォルトプロジェクトを800ファイル強で動かすことができる。 同じく Mike Orr による "Zipping Pylons components on App Engine" の投稿も役立つので目を通すべし。

その他のメモ

普段は Pylons 0.9.6.2 で開発しているので Pylons 0.9.7 は新鮮。 dev_appserver.py:
  • "--address=0.0.0.0" オプションをつければ、ssh でトンネルとかしなくても VMWare で動かしているアプリをホストマシンから見ることができる。 デフォルトでは 127.0.0.1 なので localhost からしか見られない。
Mako:
  • mako のデフォルトが html escape になっていた。 後述の webhelpers で、 webhelpers.rails を利用していると、 出力したタグがすべて escape される
WebHelpers:
  • webhelpers.rails は deprecated. 代わりに webhelpers.html 等を使おう
Pylons:
  • app_globals や pylons.h の扱いがより explicit になっている。
  • routes の書式が変わっていた。
Subversion:
  • .svn ファイルが controllers ディレクトリ下にあると、dev_appserver.py で "OSError: [Errno 13] path not accessible" が発生するので注意。 本番環境では .svn ディレクトリ下にアクセスできないことを警告してくれるのは 良いのだが、それが災いして dev_appserver を動作させることができない。
  • Mercurial ならこういうことが起きないので、ソース管理を Bitbucket に移行しようかな
  • Bitbucket に移行しました(2009-02-14)

関連記事

appengine-monkey の中で pkg_resources に _zip_directory_cache のモンキーパッチが充てられているんだけど、 それだけじゃ駄目なんだよね・・・
posted by junya at 20:49 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/114067028

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。