2008年9月19日金曜日

Google App Engineで遊んでいます。でも・・・

Google App Engine。知ってますか?
要するにホスティングサービスみたいなもんなんですけどね。
ただGoogleの潤沢なインフラを使える、無料、DBも(ちょっと変わってるけど)使える。などなどのメリットがあり、それで遊んでます。

でも、ちょいと困ったことがありまして、このGAEのサーバは、一つのHTTP Requestに対して8秒前後くらいでタイムアウトしてしまうのです。

で、それを放置すると、DeadlineExceededErrorというエラーが出てしまい、HTTPエラーが返ってしまうという仕様。

これをトラップして、DeadlineExceededErrorが出たらそれなりの正常応答を返すという方法もあって、
http://webdba.blogspot.com/2008/07/deadlineexceedederror.html
この辺を参考に、トラップして逃げることはできました。

しかし、ですよ。
どっ ちにしても8秒前後でタイムアウトしてしまうことには変わりないので、例えば誰かの書いたコメントを即時ブラウザに反映させるチャットのようなサービスを 作るためにComet的IFを用意したとすると、8秒に1回HTTP Requestを投げないといけないわけで、そうするとどうなるか。
8秒に1回HTTP Requestを投げ続けて、しばらくすると、

「Over Quota」

といって怒られる(HTTP Requestがはねられる)。

おいー、どないせいっちゅうねん!

いちお、GAEにはCPUだのストレージ容量だのに制限があって、気を付けてそれらをバカ食いしないようにしてるんですが、なぜか怒られます。
引っかかるとしたら単位時間あたりCPU使用時間くらいなんですが、このComet的IFの中身は9割以上sleep時間のはずで、そのくらいで引っかかっててもらったら全然楽しくないんですけど。
自分一人のためのサイトを作ってるなら我慢するけど、それだったらGAEのインフラなんぞ使う必要ないわー!と一人不満をためこんでいる毎日です。

英語が得意ならGAE担当に苦情のメールでも投げてやるんだが。。。

☆☆☆2009/12/26追記☆☆☆
あ~これ最初のエントリだったんだね~。
最新のDeadlineExceededErrorの情報については→ここ←が詳しいですよ。
で、相変わらずCometは使えませんが。
WebSocketとか後でいいから早くCometを・・・。

0 件のコメント: