Django on Google app engine

もう眠いのでとりあえずログ

ダウンロード

  • google_appengine_1.3.7.zip
  • appengine_helper_for_django-r105.zip

EclipseでGAEプロジェクト作成したあと、そこにappengine_helper_for_django-r105.zipを解凍する。

最終的にこんなかんじになった。

  • Project
      • appengine_django
      • mysite[開発Djangoアプリ名]
      • src
    • __init__.py
    • main.py
    • manage.py
    • setting.py
    • urls.py
    • etc..
# その後のコマンド操作。パスが通ってなかったので、調べるのに時間を浪費した。
gaedir=/home/hirogl/google_appengine
export PATH=${PATH}:$gaedir
export PYTHONPATH=${PYTHONPATH}:${gaedir}:${gaedir}/lib/antlr3:${gaedir}/lib/cacerts:${gaedir}/lib/django:${gaedir}/lib/ipaddr:${gaedir}/lib/webob:${gaedir}/lib/yaml/lib:${gaedir}/lib:${gaedir}/lib/fancy_urllib/

# create app
cd /home/hirogl/workspace/testDjp4GAE/
python manage.py startapp gaetest

# Djangoプロジェクトの作成をした後、アップロード
appcfg.py update .

とりあえずのテスト
http://hiro-gl.appspot.com/gaetest/

ポート番号を探す

/etc/serviceから探すっぽいけど、windowsの場合どうなるのかな?

s.getsockname()の所でポートが色々変わる。適当に空いてるポートを使ってクライアントは通信するかららしい。

import socket
s = socket()
port = socket.getservbyname('http','tcp')
s.connect(('www.hogehoge.com',port))

# ついでに
s.connect(('www.google.com', 80))
s.getsockname()
# クライアントのIP、使用ポートのタプル
#('192.168.0.xxx', 48108)
s.getpeername()
# 接続先のIP、使用ポートのタプル
#('66.249.89.104', 80)

withステートメント

  • ファイル閉じる
  • ロック開放
  • 補助処理の追加
  • 特殊環境中実行の保守コード

などの時に使うといいらしい。結構べんりかも。

withステートメントを使ってtry...finallyと似たような動きできる。

# Expert Python Programming より引用
class Context(object):
	def __enter__(self):
		print 'Enter context'
	def __exit__(self, exception_type, exception_value, exception_traceback):
		print 'leaving the zone'
		if exception_type is None:
			print 'with no error'
		else:
			print 'with an error (%s)' % exception_value

with Context():
  print 'start1'

#Enter context
#start1
#leaving the zone
#with no error

with Context():
  print 'start2'
  raise TypeError('i am the bug')

#Enter context
#start2
#leaving the zone
#with an error (i am the bug)

google app engine

djangoでブログっぽいサンプルを作ったけどサーバとか用意しても微妙だったので放置状態だったけど、pythonが利用できて無料でつかえる独自ドメイン対応のサーバ探してたら出てきた。
※最近はjava版もあるらしい。

色々遊べそうなので早速登録した。

参考サイト
http://techblog.ecstudio.jp/tech-tips/freewebsite-with-google-app-engine.html
http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/

とりあえず、スタート ガイド: Pythonに従ってhello worldだけやってみた。
google app engineでhelloworld

これから、ちょいちょい触ってみよう。