[gae][wave] Google AppEngineでCometしてみた
結論: 実用は無理っぽい
Google AppEngineのタイムアウトがしばらく前に30秒に延長されたので、これならなんとかCometできるんじゃないかということで試しに実装してみました。ついでにWave Gaget API互換のインタフェースを実装して、Wave GadgetがそのままAppEngineで動くようにしてみました。動いているのはCanvasガジェットです。
http://gimite-test.appspot.com/comet-test
注: そのうち落とすかもしれません。Chrome 4とFirefox 3.5で動作確認しました。
しばらく1人で繋ぎっぱなしにしてAppEngineのQuotaを見守ったのですが、そこからざっと概算すると10人が24時間繋ぎっぱなしにするとそれだけでCPUの無料Quotaを使い尽くすようです :) それはちょっと厳しいですね。30秒で切れてしまうのはやはり厳しいようです。90秒ぐらいは欲しいところですね。
ちなみに残念ながらローカルのdev_appserver.pyでは動きません。dev_appserver.pyはシングルスレッドで動いているようで、long pollすると返ってくるまでリクエストを処理できなくなってしまうようです。dev_appserver.pyに手を入れれば動くかもしれませんが。
一応ソースを置いておきます。
appengine_comet_test.tar.gz