June 4, 2011

Python Twitter API python-twitter の使い方 (Part4): Google App Engine




Twitter APIを使って単純なPostが出来るようになったので、早速本番環境で動かしてみましょう。LocalのLinux環境などではただ単純に実行したらよかったのですが、Twitter Botの本番環境では自動的にimportされていたPython Libraryもちゃんと用意しておく必要があります。

本番環境はやはり、Google App Engine(GAE)にしましょう。アカウントを作成してApplicationを作成しておきましょう。
GAEのセットアップ方法や他所のブログ等を参考にし、下記を作成しましょう。例として、私のテスト用Twitter Botであるhogeotterの場合で説明します。Local環境にあるライブラリがGAEで用意されてなければ、それらを取り揃えてGAEにupdateする必要があります。


/hogeotter.py
/secret.py
/app.yaml
/cron.yaml
/twitter.py
/httplib2/
/oauth2/

twitter.py: python-twitterライブラリ
httplib2/: httplib2ライブラリ
oauth2/: oauth2ライブラリ

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

handlers:
- url: /hogeotter
  script: hogeotter.py

cron.yaml
cron:
- description: every minutes dask for test
  url: /hogeotter
  schedule: every 10 minutes
  timezone: Asia/Tokyo


それではappcfg.pyを使ってGoogle App Engineにデータをupdateしましょう。
$ ./google_appengine/appcfg.py update ./hogeotter/
Application: hogeotter; version: 1
Host: appengine.google.com

Starting update of app: hogeotter, version: 1
Scanning files on local disk.
Cloning 13 application files.
Uploading 1 files and blobs.
Uploaded 1 files and blobs
Precompilation starting.
Precompilation completed.
Starting deployment.
Checking if deployment succeeded.
Will check again in 1 seconds.
Checking if deployment succeeded.
Will check again in 2 seconds.
Checking if deployment succeeded.
Deployment successful.
Completed update of app: hogeotter, version: 1
Uploading cron entries.
$ 


テストのためにcron.yamlでは1分毎の実行にしていますので、実行結果やエラーの有無をすぐに確認できます。エラーについては下図のような管理コンソールの左メニューのMain > Logsを確認して下さい。


Eとなっているところがエラーなので、もし発生していたら改善しましょう。
もし、テンポラリキャッシュの生成に失敗しているようなエラーが出るのなら、twitter.Apiインスタンスを作成するときにcache=Noneを渡してあげましょう。GAE上ではキャッシュを使えないのです。

さて、Twitter BotのTimelineに期待通りのTweetを行っていますか?もし出来ていれば、あなたのTwitter Botの誕生で、おめでとう!