2011年7月25日月曜日

Google App Engine Go SDK 1.5.2での注意点

Google App Engine SDKのバージョンが1.5.2になりました。

リリース内容は以下のサイトを御覧ください。
http://googleappengine.blogspot.com/2011/07/app-engine-152-sdk-released.html


私もGoのSDKを更新してプログラムが動くかどうか確認していたのですが、
ローカルサーバで実行するとdev_appserver.pyのエラーが出て実行できなくなりました。

いろいろ調べているとapp.yamlのapi_versionを2にしないといけないことがわかりました。

ということで、ドキュメントサイトを確認してみたら、サンプルコードは2になっていましたが、説明には1と記述されていたので注意が必要です。

一応、Hello Worldのコードを掲載しておきます。

application: helloworld
version: 1
runtime: go
api_version: 2

handlers:
- url: /.*
  script: _go_app


package hello

import (
       "fmt"
       "http"
)

func init() {
     http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
     fmt.Fprint(w, "Hello World!")
}

大したコードではないですが、api_versionには注意してください。
これに気がつくのにかなりの時間を取られました。

ただ、クラウド上にデプロイして実行する分にはapi_versionが1でも動作します。
(※HelloWorldレベルで確認しただけです)
デプロイのコマンドは以下のコマンドです。
appcfg.py update [ソースコードがあるディレクトリ]