WebMatrix 3: Twitter Bot でも作ってみる。 → Windows Azure Websites に置いてみたった。

執筆日時:

f:id:daruyanagi:20131020131347p:plain

WebMatrix 3: Twitter Bot (+リアルタイムログ表示付き)でも作ってみる。 - だるろぐ を Windows Azure Websites に置いてみた――のだけど、なんかすぐに止まってしまう。最初は SignalR 使ってるからかなぁと思い、リアルタイムログ表示の機能をとっぱらってみたのだけれど、やはり止まる。

Windows Azure Webサイトの無料や共有インスタンスの場合、5~20分ほどアクセスが無かった場合はシャットダウンされてリソースが解放されます。そーすると、初回アクセス時に、レスポンスが遅く感じる事象が発生します。

Windows Azureモバイルサービスのジョブスケジューラーで15分起きにリクエストを送信することで、常時ウォームアップし続けることが可能になります。
素敵だけど、怒られそうな話ですね!

Windows Azureで定期ジョブを実行する方法 - 蒼の王座

怒られたらイヤだけど、とりあえずこの方法を試してみた。結論的には、上手くいった。Twitter のメインアカウント(やなぎ ひでとし(柳 英俊) (@YanagiHidetoshi) | Twitter)に新着情報を配信できるようになった。

f:id:daruyanagi:20131020131401p:plain

スケジューリングは毎分・毎時・毎日・毎月と要求時が設定できるみたい。正時にキッカリ実行したいなんて言う場合には使えないので、10分おきにサイトをキックするだけにして、定期実行の仕組みは自分で実装した(ついでにコードも前よりカッコよく、シンプルにしたった!)。

f:id:daruyanagi:20131020131549p:plain

function warmup() {
warmUpSite("http://darufeed.azurewebsites.net/");
}
function warmUpSite(url) {
console.info("warming up: " + url);
var req = require('request');
req.get({ url: url }, function(error, response, body) {
if (!error) {
console.info("hot hot hot! " + url);
} else {
console.error('error warming up ' + url + ': ' + error);
}
});
}

スクリプトは JavaScript で記述。コピペで拝借したけれど、ウォームアップに使うならこれで十分みたい。