2008年6月25日水曜日

TheSchwartzを使って重たい処理を非同期に行い、手元はサクサクに

昨日id:rytich経由でGearmanやTheSchwartzというキーワードを知りました。
調べてみるとこれがなんだかとても面白そうで、実装に必要なCPANモジュールも完備されてるので何かやってみようと思い、出来たのはWWW::YourFileHostを使った非同期なダウンローダーです。

codecheck.inに置いてます

これを使うと、こんな感じになります。


  • URLを指定してキューを追加して終了。軽くてサクサク(client.pl)

  • キューに登録されたURLを元にコンテンツをゲット。重たいけどきっちりこなす(worker.pl)



これの何がうれしいかというと、コンテンツをゲットする部分を待たずに、
どんどんゲットしたいURLを投げつける事が出来る事にあります。

通常はコンテンツをゲットする時にリクエストを投げた後、対象のゲットが完了するまで待つ必要があるわけですが、
こうやる事でリクエストを投げる部分においてはそのリクエストをさばいてくれるworkerに投げっぱなしでよいのです。
シェルもすぐ帰ってくるし、次々リクエストだけ先行して行えるわけです。

これは、回線があまり速くない僕のようなユーザーにはありがたい。
バンバン追加して寝て起きたら終わっているみたいな。
今ゲットしてる最中だから終わるまで待っていようとか新しくシェル起動しようとか、そういうのも不要になります。

このclient.pl部分をBookmarklet化して今見ているものをDLキューに登録する。
とか、なかなか便利になりそうな気がしますです(少なくとも僕はw)。

ブクマ登録やreblog等一見処理は単純だけど相手先の状況で処理時間が大幅に変動する。
みたいな場面に置いて、手元の自由がすぐ効くようになるのはとっても便利。

今回、以下のリンクが大変参考になりました。



多分よいこはまねしないほうがいいですヨ

0 件のコメント:

久しぶりにブログを書く

最初ログインできなくて焦った。 いや、ログインはできたのだが、ログイン後に自分のブログの管理画面に遷移できず、新しいブログを作成する画面になってしまったからビビッてしまった。 どうやら、Google+(現在はサービス終了)に紐づいたプロフィールを設定しているとこのような状況に陥る...