【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

 

 

 

IT起業アカデミア