タグ

theschwartzに関するkamipoのブックマーク (18)

  • TheSchwartz / Gearman のワーカープロセス管理WorkerManager - stanaka's blog

    概要 Perlの非同期処理システムとしてTheSchwartz / Gearmanを非常に便利に使っているのですが、いい感じにワーカープロセスを管理したかったので、WorkerManagerなるものを作ってみました。作ったのは実は1年以上前なのですが、ようやくの公開です。 基は、Apacheのpreforkモデルを踏襲しています。特徴は、 子プロセスを複数起動させて、ジョブを並列実行 一定回数のジョブを実行したら、子プロセスを再作成 クラスを定義するのみでジョブを実行 TheSchwartz / Gearmanの切り替えを最低限の変更で実現 ワーカープロセスの安全な停止(プロセス停止の際に、実行中のジョブの終了後に終了) ジョブの実行時のタイムスタンプをジョブ投入からの遅延をログに保存 というあたりです。preforkモデルなので、あまりモダンな設計ではないですが、gdbでのデバッグの容

    TheSchwartz / Gearman のワーカープロセス管理WorkerManager - stanaka's blog
  • TheSchwartz::Serviceがよさげ - スコトプリゴニエフスク通信

    PythonからTheSchwartzを使うならばTheSchwartz::Serviceがよさげ。こいつはHTTP経由でTheSchwartzのジョブを扱えるので、Gearmanを介する必要がないところがよい。sixapartのレポジトリからチェックアウトして、 $ svn co http://code.sixapart.com/svn/Net-Service/trunk Net-Service $ svn co http://code.sixapart.com/svn/TheSchwartz-Service/trunk TheSchwartz-Service TheSchwartz-Service/bin/schwartz-serviceでプロセスを起動。オプションをつければデーモンとして起動させることもできる。 $ perl schwartz-service --help $ per

  • TheSchwartz の worker を安全に停止する - 酒日記 はてな支店

    TheSchwartz の worker を Ctrl-C とか kill で止めた場合に、job の処理が半端な状態で終わられると困る、という話。以前 Deamon::Generic で TheSchwartz の worker をデーモン化する(2) - 酒日記 はてな支店 で諦めたんだけど、ちょっと必要に迫られたので考えてみたら一応できたっぽい。 package MyWorker; use strict; use warnings; use base qw( TheSchwartz::Worker ); sub sighandler { warn "caught signal @_\n"; no warnings 'redefine'; *TheSchwartz::work_once = sub { exit }; } sub work { my ($class, $job) = @

    TheSchwartz の worker を安全に停止する - 酒日記 はてな支店
    kamipo
    kamipo 2009/06/18
    シグナルハンドラで TheSchwartz::work_once を exit するだけのサブルーチンで再定義してしまう。
  • Perl+MySQLで動くジョブキューサーバ『TheSchwartz』を使ってみた - ホットリンク研究開発室のblog

    yukiinu2ndです。クリスマスイブですが気にせずPerlしています。 さて、今回は仕事上でどうしてもキューのような仕組みで少しずつ順番に処理をする必要が出てきてしまいました。 一から作るのは面倒&時間がなかったため、探してみたところ『TheSchwartz』が見つかったので使ってみました。 この『TheSchwartz』ですが、PerlだけでなくMySQLを合わせて使う*1ことでジョブキューの仕組みを実装しています。 クライアント(仕事をお願いする側のアプリケーション)はMySQL上のジョブキューにenqueue(RDBMSでいうINSERT)します。 ワーカー(仕事をこなすプロセス)は定期的(デフォルトは5秒間隔)でジョブキューを監視し、ジョブがあれば消化していきます。 一定時間毎に監視するという仕組みのため、リアルタイムで来たものを処理したり、処理性能が求められる用途には向きませ

    Perl+MySQLで動くジョブキューサーバ『TheSchwartz』を使ってみた - ホットリンク研究開発室のblog
  • githubにコミットしました - masartz->log(type=>'hatenablog')

    前回の http://coderepos.org/share/browser/lang/perl/TheSchwartz-Worker-Plugin-Manager を http://coderepos.org/share/browser/lang/perl/TheSchwartz-Worker-Plugin-Hook の形にリネームして再コミットしておきました。 んで同じものをgithubにも投入しました。 http://github.com/masartz/the-schwartz-plugin-hook/tree/master Plugin-Logの方は http://github.com/nekokak/the-schwartz-plugin-logger/tree/master こっちの方が素晴らしいので自重しました。 最近皆様絶賛移行中のgitですが、 手元のMac OS X(

    githubにコミットしました - masartz->log(type=>'hatenablog')
  • codereposにTheSchwartzのプラグインをコミットしました - masartz->log(type=>'hatenablog')

    http://coderepos.org/share/browser/lang/perl/TheSchwartz-Worker-Plugin-Log http://coderepos.org/share/browser/lang/perl/TheSchwartz-Worker-Plugin-Manager ◎TheSchwartz-Worker-Plugin-Log 実際に案件で使った際のログ仕様をほぼそのまま載せてしまっているのですが、 - pathとfileを指定して、任意のディレクトリにログファイルを吐く - 日付でローテーションされる 週ごとにログに吐きたいとか、そもそもDBに保存したいとかいう 要望には全く応えられない程度のシロモノです。 なので、今後の修正もその辺を念頭に考えてます。 ◎TheSchwartz-Worker-Plugin-Manager とりあえず名前訂正します

    codereposにTheSchwartzのプラグインをコミットしました - masartz->log(type=>'hatenablog')
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • TheSchwartz で時間が掛かる job を実行するときは grab_for に注意 - 酒日記 はてな支店

    TheSchwartz の worker で、一つの job が worker->grab_for (default 3600) 秒以上掛かる処理をすると、処理中の job を他の worker が掴んでしまう。 具体的には大量のメール送信をしていたんだけど、Data::Valve でスロットリングしてゆっくり送っていたら 1時間以上掛かって、別の worker も同じ job を実行してしまった。結果、同じメールが 2通ずつ出た orz grab_for は job を処理しはじめた worker が、失敗を報告もできないでクラッシュした場合に、別の worker が処理できるようにするもの。しかし送信してしまったメールは取り消せないからな…… package MyWorker; use base qw/ TheSchwartz::Worker /; sub grab_for { 60

    TheSchwartz で時間が掛かる job を実行するときは grab_for に注意 - 酒日記 はてな支店
  • TheSchwartzのER図 - とほほのN88-BASIC日記

    暇なわけじゃないんだからねっ! MySQL Workbenchを使ってみたかっただけ。 無償版だとちょっときついですね。

    TheSchwartzのER図 - とほほのN88-BASIC日記
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • PresenTitlePlaceHolder

    TopicsPlaceHolder SectionTitlePlaceHolder TIME rest time current/total

  • ゆーすけべー日記

    サキとは彼女の自宅近く、湘南台駅前のスーパーマーケットで待ち合わせをした。彼女は自転車で後から追いつくと言い、僕は大きなコインパーキングへ車を停めた。煙草を一吸ってからスーパーマーケットへ向かうと、ひっきりなしに主婦的な女性かおばあちゃんが入り口を出たり入ったりしていた。時刻は午後5時になる。時計から目を上げると、待たせちゃったわねと大して悪びれてない様子でサキが手ぶらでやってきた。 お礼に料理を作るとはいえ、サキの家には材が十分足りていないらしく、こうしてスーパーマーケットに寄ることになった。サキは野菜コーナーから精肉コーナーまで、まるで優秀なカーナビに導かれるように無駄なく点検していった。欲しい材があると、2秒間程度それらを凝視し、一度手に取ったじゃがいもやら豚肉やらを迷うことなく僕が持っているカゴに放り込んだ。最後にアルコール飲料が冷やされている棚の前へ行くと、私が飲むからとチ

    ゆーすけべー日記
  • TheSchwartzを使ってみた - libnitsuji.so

    TheSchwartzについては以下がわかりやすい。 TheSchwartzは非同期かつ分散した環境で各種ジョブを処理させるという枠組みを再実装して利用しやすくしたもので,MySQLSQLiteもサポート)上のデータベースにジョブを格納し,各ワーカープールで処理を行って結果を返す,という単純なフレームワークです。 第11回 OSCON 2007レポート みんなが注目している技術は?:サンフランシスコで昼を|gihyo.jp … 技術評論社 あとは以下のスライドでもっと詳しく知ることができる(71ページから) http://www.danga.com/words/2007_04_linuxfest_nw/linuxfest.pdf gearmanというジョブキューとTheSchwartzとの違いは以下のエントリがわかりやすい。 http://d.hatena.ne.jp/tokuhiro

    TheSchwartzを使ってみた - libnitsuji.so
  • cohtan blog: TheSchwartzを使って重たい処理を非同期に行い、手元はサクサクに

    2008年6月25日 TheSchwartzを使って重たい処理を非同期に行い、手元はサクサクに 昨日id:rytich経由でGearmanやTheSchwartzというキーワードを知りました。 調べてみるとこれがなんだかとても面白そうで、実装に必要なCPANモジュールも完備されてるので何かやってみようと思い、出来たのはWWW::YourFileHostを使った非同期なダウンローダーです。 codecheck.inに置いてます これを使うと、こんな感じになります。 URLを指定してキューを追加して終了。軽くてサクサク(client.pl) キューに登録されたURLを元にコンテンツをゲット。重たいけどきっちりこなす(worker.pl) これの何がうれしいかというと、コンテンツをゲットする部分を待たずに、 どんどんゲットしたいURLを投げつける事が出来る事にあります。 通常はコンテンツをゲット

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • hide-k.net#blog: Catalyst::Model::AdaptorでTheSchwartzをModel化

    今さらTheSchwartzを使い始めました。 で、jobの状態を監視するWebインターフェースをCatalystで作ることになったのですが、いちいちTheSchwartzのインスタンスを作るのが面倒くさい。 でもそのためにModel作るのもアホらしい。 で、Catalyst::Model::Adaptorを使ってMyApp::Model::TheSchwartzを作ってモデルとして使うのをやってみたのでメモ。 HelperスクリプトでMyApp::Model::TheSchwartzを作成 script/myapp_create.pl model TheSchwartz Adaptor TheSchwartz 出来上がったMyApp::Model::TheSchwartzを変更 package MyApp::Model::TheSchwartz; use strict; use w

  • 1