nDiki : HTTP::Daemon

2000年7月30日 (日)

自作 HTTP Proxy、パイプライン化

一昨日で書いた HTTP Proxy、使用しているライブラリ(LWP::UserAgent, HTTP::Daemon) それぞれパイプライン的な処理(レスポンス全体を受信/作成することなく、処理/送信)サポートを利用してパイプライン化。

どちらのライブラリもコールバックを指定する形でそのままでは、つなげないので、HTTP::Daemon でクライアントへのレスポンスの送信を一部づつ送る方は簡単に自作した。

これで、サイズの大きいページも Proxy がすぐに転送を開始できるため、ブラウザ側で待たされる事が少なくなった。 めでたし、めでたし。

スポンサード リンク
[ 7月30日全て ]

2004年6月29日 (火)

HTTP::Daemon - パイプが切断されました

[ Perl ]

HTTP::Daemon でHTTPインタフェースを提供しているプログラムがあるのだが、レスポンスに時間がかかるリクエスト時にクライアント側で中断すると「パイプが切断されました (broken pipe)」で異常終了してまう。

 $SIG{PIPE} = 'IGNORE';

しておかないと駄目らしい。

[ 6月29日全て ]

2004年9月14日 (火)

XMLRPC::Lite + 自前の HTTP::Daemon サーバ

既に HTTP::Daemon で作成されているHTTPサーバで、XML-RPC インタフェースを提供したい。 前回のチェックで XMLRPC::Lite を使う事にした(RPC::XMLActivePerl 5.6.1 build638 でテストが通らない)。 このパッケージで用意されているサーバ向けモジュールは、主に単独CGI プログラムで使うモジュールと、自前で HTTP::Daemon をまわすサーバタイプ。

そのままでは使えないので、以下のように。

  1. XMLRPC::Transport::HTTP::CGI のサブクラスを作成し、handle をオーバライドする。中身は SOAP::Transport::HTTP::Server::handle を呼ぶだけ (SUPER::handle では駄目)。
  2. XML-RPC リクエストがきたら、上記インスタンスの request メソッドで HTTP::Request オブジェクトを渡す。
  3. handle を実行。
  4. response メソッドで HTTP::Response を受け取り、クライアントに送信。

handle メソッドで入出力をさせないようにするのがポイント。

[ 9月14日全て ]

2004年11月26日 (金)

HTTP::Daemonベースのプログラムのテスト

make test でテストしておけるようにしておきたい。

ということで王道。fork して daemon プログラムを exec。 WWW::Mechanizeで daemon に HTTP でアクセスし各種テスト。

終わったら kill。

Win32 (ActivePerl)では fork + exec で起動できるのだけれど kill では死なない。 ということで Win32::Process::Create で直接起動して、Win32::Process::Kill で終了させるという別解で。

HTTP + HTMLのテストは、以前ちょっと使ったことのあるHTTP::WebTestを使おうかと思ったが、なんだかんだいって WWW::Mechanize の方が好きなように書けそうなのでこちらをチョイス。

[ 11月26日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

follow us in feedly

月別インデックス
Process Time: 0.053895s / load averages: 0.83, 0.79, 0.75
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker