Google App Engine事始め

cronサービスを1分間隔で動かしたい。
レンタル鯖やフリーのcronサービスもあるのだが、
最短実行間隔が5分や10分、
酷いところになると最短1時間というとてもニーズに
答えられそうにもないものであった。

1分に1回、外部のphpをコールさせるためだけに
有料のwebcronサービスを使うのもばかばかしいので、
1分間隔で動かせるフリーのcronサービスを探していたら、
Google App Engineが、最短1分間隔でcronを動かすことが
出来るらしい。

そろそろGoogle App Engineを覚えてみたい、
そう思っていた頃でもあったのでさっそくテストがてら、
導入からGoogle App Engine上でHell Worldを表示させるまでを試してみた。

Google App Engine についてまずは概要をさらっと読む
http://code.google.com/intl/ja/appengine/docs/whatisgoogleappengine.html

とりあえずはココでアプリケーション用の受け皿を作れと言うことらしい。
http://appengine.google.com/

Create an Applicationをクリックする。
[ ].appspot.com という型式になるらしい。

実験用と言うことで、debugworks.appspot.com
というアプリケーションを登録した。

次にGoogle App Engine SDK のダウンロードをする。
http://code.google.com/intl/ja/appengine/downloads.html
Windowsなので、GoogleAppEngine_1.2.0.msi
http://googleappengine.googlecode.com/files/GoogleAppEngine_1.2.0.msi
を選択した。

セットアップすると、pathが通される。

ここから先はDOS窓を開いて作業。

C:\>CD C:\Program Files\Google\google_appengine

として、フォルダを移動。
ついでにSETコマンドを叩いて,pathが通っていることを確認。

C:\Program Files\Google\google_appengine>path
PATH=c:\php;c:\mecab\bin;C:\usr\local\bin;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\Program Files\Google\google_appengine\

一番最後にC:\Program Files\Google\google_appengine\ が
追加されていることを確認した。

Error 404 (Not Found)!!1

ドキュメントを読んでいると,
何かをするには,appcfg.py を実行すればいいらしい。
おもむろに実行。

C:\Program Files\Google\google_appengine>appcfg.py

ダイアログが出て,

Windows
このファイルを開けません:
ファイル: appcfg.py
このファイルを開くには、作成元のプログラム名が必要です。
インターネットで自動的にプログラムを検索するか、
又はコンピュータにあるプログラム一覧から手動で選択してください。

って出てきた。

ああ、Pythonを自動的にインストールしてくれる訳じゃないのね・・・。
インストーラーがmsiだから最近流行の
開発環境全部入れてくれると思って油断してたw

Google App Engine SDK for Pythonが対応しているのは、バージョン2.5とのこと。
Pythonのダウンロードページに行く。
http://www.python.org/download/

ホームページへ行くと、2.6.2と3.1.1がリリースされている。
2.5は無いものの,あまりバージョン上げすぎて
Google App Engine SDKが対応していなくて苦労するのも
嫌だったので2.6.2をダウンロードしてインストール。

先ほどのDOS窓をを閉じて,再度

C:\>CD C:\Program Files\Google\google_appengine

C:\Program Files\Google\google_appengine>appcfg.py
C:\Program Files\Google\google_appengine\appcfg.py:40: DeprecationWarning: the sha module is deprecated; use the hashlib module in
stead
DIR_PATH,
Usage: appcfg.py [options]

Action must be one of:
cron_info: Display information about cron jobs.
help: Print help for a specific action.
request_logs: Write request logs in Apache common log format.
rollback: Rollback an in-progress update.
update: Create or update an app version.
update_cron: Update application cron definitions.
update_indexes: Update application indexes.
vacuum_indexes: Delete unused indexes from application.
Use ‘help ‘ for a detailed description.

Options:
-h, –help Show the help message and exit.
-q, –quiet Print errors only.
-v, –verbose Print info level logs.
–noisy Print all logs.
-s SERVER, –server=SERVER
The server to connect to.
-e EMAIL, –email=EMAIL
The username to use. Will prompt if omitted.
-H HOST, –host=HOST Overrides the Host header sent with all RPCs.
–no_cookies Do not save authentication cookies to local disk.
–passin Read the login password from stdin.
-f, –force Force deletion without being prompted.
–num_runs=NUM_RUNS Number of runs of each cron job to displayDefault is 5
-S SIZE, –max_size=SIZE
Maximum size of a file to upload.
-n NUM_DAYS, –num_days=NUM_DAYS
Number of days worth of log data to get. The cut-off
point is midnight UTC. Use 0 to get all available
logs. Default is 1, unless –append is also given;
then the default is 0.
-a, –append Append to existing file.
–severity=SEVERITY Severity of app-level log messages to get. The range
is 0 (DEBUG) through 4 (CRITICAL). If omitted, only
request logs are returned.

何かワーニングが出て居る気がするが、今は気にする必要はない。
どんな言語でも,最初はHello worldから。ということで、
チュートリアルを見てHello worldを表示するアプリケーションを作ってみる。
http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/helloworld.html
以下のファイルを用意する。

helloworld.py
print 'Content-Type: text/plain'
print ''
print 'Hello, world!'

app.yaml
application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
– url: /.*
script: helloworld.py

以下のフォルダに移動し,次のコマンドで起動する

C:\Program Files\Google\google_appengine>dev_appserver.py helloworld/
INFO 2009-09-25 00:45:35,453 appengine_rpc.py] Server: appengine.google.com
Allow dev_appserver to check for updates on startup? (Y/n):

もちろんYで起動する。

ブラウザを開いて http://localhost:8080 を表示させてみると
Hello, world!が表示されている。

アプリケーションのアップロード
さっそくアップロードしてみる。

その前に、app.yaml ファイルを編集し、application: 設定の値を、
helloworld から登録したアプリケーション ID に変更しろとのこと。

書き換えたら以下のコマンドでアップロード。

C:\Program Files\Google\google_appengine>appcfg.py update helloworld/
初回のみメアドとパスワードを聞かれるので入力。
Email: gappengine@gmail.com
Password for gappengine@gmail.com:
Scanning files on local disk.
Initiating update.
Cloning 3 application files.
Deploying new version.
Checking if new version is ready to serve.
Will check again in 1 seconds.
Checking if new version is ready to serve.
Closing update: new version is ready to start serving.
Uploading index definitions.

アップロード完了したので見てみる。
http://debugworks.appspot.com/

おお?!なんか動いてる。
やりたいことを出来るまでが大変だけど、手順を覚えて活用したい。

コメント

タイトルとURLをコピーしました