タグ

schwartzに関するIMAKADOのブックマーク (10)

  • 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 を安全に停止する - 酒日記 はてな支店
    IMAKADO
    IMAKADO 2009/04/23
    job の処理が半端な状態
  • Perl+MySQLで動くジョブキューサーバ『TheSchwartz』を使ってみた - ホットリンク研究開発室のblog

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

    Perl+MySQLで動くジョブキューサーバ『TheSchwartz』を使ってみた - ホットリンク研究開発室のblog
  • 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
  • 時間の掛かる処理はTheSchwartzで非同期処理 - (゚∀゚)o彡 sasata299's blog

    2009年03月03日00:32 Perl MySQL 時間の掛かる処理はTheSchwartzで非同期処理 先日の ライブドアテクニカルセミナー でも思ったんですが、重たい処理を行う際に、「一旦キューに溜めておいて非同期で処理する」というのは非常に重要だと思います。レスポンスも早いし。.。゚+.(・∀・)゚+.゚ ということで、、、TheSchwartz というジョブキューサーバを使ってみました(・∀・) TheSchwartz は以下の2つの script で構成されます。 A) queue から job を取ってきて実行する script (worker.pl) B) job を queue に登録する script (client.pl) よく似たものに Gearman があります。違いとしては TheSchwartz ・queue を DB に保存する ・非同期で処理する ・DB

  • 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

  • TheSchwartz を PostgreSQL / SQLite で使うと worker プロセスが太る(のは解決済) - 酒日記 はてな支店

    MySQLだと問題ないみたい。あと、job の引数に何を渡すかで変わってくるらしい…… [2010-2-16 追記] 追記時点での DBD::Pg と DBD::SQLite の最新版 (DBD::Pg-2.16.1, DBD::SQLite-1.29) では、以下に記述されているメモリリークは解消されています。記事自体は記録の意味も兼ねているので消さずに残しますが、ご注意ください。 ちなみに SQLite 用のスキーマは TheSchwartz 自身に同梱されていて t/schema-sqlite.sql に、PostgreSQL 用のはリポジトリの trunk にあります。doc/schema-postgres.sql 検証用のスクリプトは最後に載せますが、単に client が job を突っ込んで、worker が job を取り出して $job->completed() するだけ

    TheSchwartz を PostgreSQL / SQLite で使うと worker プロセスが太る(のは解決済) - 酒日記 はてな支店
  • 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 に注意 - 酒日記 はてな支店
    IMAKADO
    IMAKADO 2009/04/10
    worker で、一つの job が worker->grab_for (default 3600) 秒以上掛かる処理をすると、処理中の job を他の worker が掴んでしまう
  • cohtan blog: TheSchwartzを使って重たい処理を非同期に行い、手元はサクサクに

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

  • TheSchwartzで仕事をあとにまわす - bits and bytes

    web2.0 時代のジョブキューサーバー Gearman と TheSchwartz の関係について - TokuLog 改めB日記に書かれているとおり、Gearmanは仕事を投げられたらすぐやって返す前提になっていて今やりたくないけどあとでやるみたいなのができません。 たとえば、10分後にならできるんだけど、という仕事が来たとします。 このときGearmanのワーカの中でsleepして10分待つと、後から来たほかの仕事を一切しないで10分待つことになってしまって、後から来た仕事が今すぐできるものだったとしても10分待たれさるのでGearmanだと今来た仕事のためにsleepして待つわけにはいきません。 結果としてGearmanだとやってきた仕事を今すぐやるか、絶対やらないか、の二択になってしまいます。 それだと困るので、もう一方のTheSchwartzだと、今やりたくないけどあとでやる、

  • YappoLogs: CodeReposへのコミットをリアルタイムに通知する仕組みあります

    CodeReposへのコミットをリアルタイムに通知する仕組みあります commit-ping/SITEINFO - CodeRepos::Share - Trac CodeReposにcommitされるとこのページの Commit Ping Servers 以下にかかれているURLに対してコミットの情報がPOSTされる仕組みです。 yamlというパラメータ名でYAML形式に変換されたコミットデータがPOSTされます。ということでアナウンスしてないけど、こんな仕組みが有ります。 svnのcommit hookを使って、Commit Ping Servers以下に書かれているURLに対してコミット時のメタデータをPOSTで送信します。 POSTする時に詰まると嫌なのでTheSchwartzを使って非同期的に処理しています。 是非面白いことをやってくださいー Posted by Yappo at

  • 1