GAE/jでservletを定期的に実行して、twitterを検索
cron.xmlによる自動実行と直接実行の禁止
GAE/jを利用して、servletを定期的に実行する方法に関するメモ。
この際、自動実行対象が管理者以外に実行されない様にする事も可能。
詳しくは以下のGoogle公式ドキュメントで。
Java 用の cron を使用したスケジュール タスク - Google App Engine - Google Code
尚、上記公式ドキュメントを見る限り、cronジョブのアップロードには何か特別なコマンドを使う様だが、netBeans6.9.1+GAE pluginの環境*1では、特にそれを意識する必要は無かった。
searchAPIの回数制限とGAE
twitterの検索に関しては、以前の記事*2を参照。
twitterのsearchAPIはアクセス元IPアドレスでRateLimitを判定する。しかしどうやら、GAE/jからこれを実行する場合、全てのユーザが同一IPを使用する事になるらしい。結果として、かなり高い頻度でRateLimitオーバーが起こる*3。
一応、twitter側もこの問題は認識しているようで、アクセス可能回数を問い合わせると、一時間あたり20000回という非常に大きな結果が得られる。それでもやはり、RateLimitオーバーは避けられない。
現在製作中のtwitter botアプリケーションでは、検索結果はそれほど重要視していない為、このまま運用していく事とした。