【Twitter bot 開発】柴犬botを作成(自動でつぶやく版)
適当にやったらGoogle App Engineのcronで動くようになった
Google App Engineのcronスケジュールで外部のphpファイルを叩くようにしました。
10分30分に1回鳴くように設定してあります。
フォローすると狂犬のようなつぶやきが確認できます。
柴犬bot:http://twitter.com/shiba_inu_bot
やった事のまとめ
1.Google App Engineでアプリケーションの登録を行う
cron用のアプリケーション領域を確保するためGoogle App Engine上に新たなアプリケーションを作成します。
2.ローカルで適当なディレクトリを作成し、cron用のファイルを作成
なんでもいいのでbin直下にでもディレクトリを作成して以下のファイルを作ります。
「cron.yaml」
cron: - description: cron job name url: /.* schedule: every 10 minutes
cron.yamlにはcronのタスクスケジュールを記述します。
上記のcron.yamlには10分の間隔で設定したアプリケーションを実行するように記述しています。
cron.yamlはYAMLというxmlみたいな形式に則って記述するらしいですが、例によってまったく分かってないのでYAMLについては以下のサイトを参照して下さい。
http://jp.rubyist.net/magazine/?0009-YAML
「app.yaml」
application: example-apps version: 1 runtime: python api_version: 1 handlers: - url: /.* script: task.py login: admin
app.yamlにはアプリケーションの基本設定と、cron実行時に呼び出されるファイルの記述を行います。
最後の行のlogin:adminはセキュリティ対策らしいです。
「task.py」
import urllib2 req = urllib2.Request("ここにPHPファイルのURLが入ります") f = urllib2.urlopen(req)
cronで実行されるファイルです。
外部のPHPファイルを呼び出すように記述されています。(多分)
Pythonの書き方はまったく分からないので、動くわけねえと思ってたのですがあっさり動きました。
参考:http://pc11.2ch.net/test/read.cgi/php/1243654802/403-408
3.Google App Engineにデプロイを行う
どうやら開発サーバではcronが動作しないらしいのでとっととデプロイして確認します。
ターミナルから「appcfg.py update ディレクトリ名/」を叩き、認証に成功するとファイルがアップロードされます。
4.Google App EngineのCron JobsからCronの実行状態を確認
cronが上手く実行されていれば「2009/11/26 18:55:34 on time Success」といった表示がジョブ名の隣に表示されます。
たまに「 on time Failed」とか出たりしますが、ちゃんと実行されてる場合もあるので何が何やら。
書き方が何かおかしいのかも。
以上のような手順で出来た事は出来たんですけど、Google App EngineのこともPythonの事もまったく分かってません。
逆に言うとまったく分かんなくてもcronの設定は出来るので、何かの参考になれば幸いです。
参考:http://blog.livedoor.jp/chuhei1107/archives/51124710.html