The Schwartz plugin by yokohama.pm #3
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

The Schwartz plugin by yokohama.pm #3

on

  • 1,658 views

yokohama.pm #3 masartz prezentaion

yokohama.pm #3 masartz prezentaion

Statistics

Views

Total Views
1,658
Views on SlideShare
1,658
Embed Views
0

Actions

Likes
1
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

The Schwartz plugin by yokohama.pm #3 Presentation Transcript

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