"やよい"の改修問題ですが,とりあえず Python で行くことにして現在色々検証中です。
殆どの部分で Python で行ける手応えがあるんですが,実際にプロト書き始めてみて問題が発生しました。
それが HTTP 通信の部分。
"やよい" は大きくデータ閲覧およびサービス管理用のWebアプリ部分とデータ収集用のバッチプログラム部分に別れているのですが,このデータ処理のところで大量の HTTP 通信を行う必要があります。大体15〜30秒ごとに30〜100ぐらい接続する感じです。
これらの HTTP 通信はほぼ同一サーバに対する通信になりますので,KeepAlive を使用することで,サーバ・クライアント双方で大幅にコストを削減できます。ってか,逆に言えば KeepAlive を使用しないとクライアント側もけっこう大変なことになります。
特に Windows 環境下だと,TCP/IP の接続をアプリケーションでクローズしても,実際にはすぐには完全にクローズにならないので,わりとリソースが無駄に消費されてしまい,はては処理不能になったりします。
これを防止するためにも KeepAlive を使用して HTTP 通信したいのですが,Python 付属の HTTP クライアントである urllib2 では KeepAlive をサポートしてません。
より下層のHTTP通信ライブラリである httplib を使用すれば実現できるかも知れませんが,chunked の問題やエラー処理その他諸々を考えるとわりとめどそうです。
どうしたものやら。
金曜ぐらいまでに上手い解決法が見つからなかったら,諦めて Java でやろうと思います。
なかなか難しいですね。

コメントする