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\ が
追加されていることを確認した。
ドキュメントを読んでいると,
何かをするには,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/
おお?!なんか動いてる。
やりたいことを出来るまでが大変だけど、手順を覚えて活用したい。
コメント