The Schwartz plugin by yokohama.pm #3
Click here to load reader
-
Upload
masaru-hoshino -
Category
Technology
-
view
1.067 -
download
5
description
Transcript of The Schwartz plugin by yokohama.pm #3
TheSchwartz の拡張
@masartz
Agenda
• 自己紹介• TheSchwartzの使用時に・・・• 今回やってみた拡張
Reload Parallel Log Manager
• もっとやりたいこと PreData
自己紹介
• 名前:星野 将 (ホシノ マサル )• id : masartz(マサルツ )• yokohama.pmは皆勤賞です• 前回までは「 filsturas」とか名乗ってました• 「ネコケーエーケ」が読まれなかった
nekokakさんに読めないと言われ改名• 所属: SNSの中の人• use base qw/ bonnu kazeburo lyokato /;
TheSchwartz の使用目的と実績
• NW的に分離されている• 負荷的に処理が詰まる可能性• TheSchwartz?ナニソレ、美味しいの?• 使ってみるとちょいちょい問題が
今回やった拡張 - Reload• worker プロセスは起動しっぱなし
• が、 use しているモジュールは改修が入る
• 再読込されない→不具合動作 orz• TheSchwartz::Worker::Plugin::ModuleReload• ModuleReload をラップしただけ
• 参考: HTTP::Engine::Plugin::ModuleReload– yappo++
• ちなみにプロセスを kill すればいいのでは?
• こればっかりは弊社内の運用体制に依る
今回やった拡張 - Parallel• ジョブを作るたびの pl作成手間削減
– Package main 部分以外は Name Space以外一緒• 共通部分もまとめられてややスッキリ• 中身は Parallel::Prefork
– kazuho ++• 実装面はこちらをかなり参考に
– tokuhirom++
今回やった拡張 - Parallel※before
package MyApp::Worker1;use base qw/ TheSchwartz::Worker /;sub work{ my ( $class , $job ) = @_; # blah blah blah}
package main;use TheSchwartz;my $client = TheSchwartz->new( ・・・ );$client->can_do(‘MyApp::Worker1’);$client->work();
今回やった拡張 - Parallel※after
use TheSchwartz::Worker::Plugin::Parallel; my @classes = qw/ MyApp::Worker1 MyApp::Worker2 /;TheSchwartz::Worker::Plugin::Parallel->work( \@classes );
今回やった拡張 – Log• TheSchwartz のログ管理
• エラー時に error テーブルにインサートのみ
• でも error テーブルの構成もいけてない
• 簡単でいいので、処理結果が欲しいよぅ
• とりあえずファイル出力だけ実装・運用
• 汎用的でない部分が残ってる
• Log::Dispatch とか使ってみたい
今回やった拡張 – Manager• Reload , Parallel , Log のメソッドを包含
• Manager 自体が TheSchwartz::Worker を継承
• これまで use base qw/TheSchwartz::Worker /; としてたところを置き換える
• 拡張メソッドを持った、 worker のベースクラス
もっとやりたいこと
• PreData• 社内では実装済み• 下準備で DBに必要情報を格納 (YAML形式 )
+-----------+------------------------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------------+------+-----+---------------------+-------+ | id | bigint(20) unsigned | | PRI | 0 | | | data | text | | | | | +-----------+------------------------+------+-----+---------------------+-------+
• ジョブの push時に idを渡す• workerで data内容を取得・解析して処理実行
まとめ
• 全体的に他力すぎる件• 今回のモジュール群• google code• codereposにもコミットします><• 今回の内容に関するエントリー• http://d.hatena.ne.jp/masartz/20081118/12269870
31
ご清聴ありがとうございました!