タグ

theschwartzに関するy_uukiのブックマーク (7)

  • jmblog.jp – TheSchwartzで関連するジョブをグルーピングしてまとめて実行する

    TheSchwartz では、関連するジョブをグルーピングしてまとめて実行することができるとドキュメントに書いてあったので、試しにやってみました。(参考にしたのは、Movable Type のソースコード。) グルーピングしない場合 まずは、普通に処理する場合。キューにジョブを追加する client.pl はこんな感じ。 #!/usr/bin/perl use strict; use warnings; use TheSchwartz; use DateTime; my $client = TheSchwartz->new( databases => [ {   dsn => 'dbi:mysql:TheSchwartz', user => 'db_user', pass => 'db_password', }   ],   ); $client->insert

  • SIGNALを考慮してないTheSchwartz Job workerをなるべく安全に停止する - 酒日記 はてな支店

    TheSchwartz の worker はシグナルに対してデフォルトでは何もしないので、再起動させようと SIGHUP を送信したりすると job 処理の途中で割り込まれて死ぬ可能性があります。 自前でトラップして安全に再起動する方法は過去に TheSchwartz の worker を安全に停止する で書きました。3年前の記事ですが。 今回は、シグナルへの対処がなされていない古いスクリプトを修正したものの、既に動いている worker を安全に止めないと入れ替えられないのでどうするか、というお話。 安全な停止法を twitter で緩募したところ、以下のようなアドバイスを頂きました。しかし別の queue DB 使うのは確実そうだけどちょっと面倒ですよね…… 緩募: signal trapしてないTheSchwartzのjob workerを安全に止める方法 2011-04-25 11

  • Kyoto.pm#01のQudoの発表についてのレス - blog.nekokak.org

    @shiba_yu36さんがQudoの発表をするというのがKyoto.pmに行く強いきっかけになったので、 一番まえの席に陣取って発表を見ていました。 @Yappoさんのように発表者が発表している最中にtwitterという公開の場でlive disをするのはためらわれたので、 今あらためて@shiba_yu36さんの発表内容を振り返りつつ突っ込んでみたいと思う。 disじゃないよ。 @shiba_yu36さんの発表資料 http://shibayu36.hatenablog.com/entry/2012/03/18/230525 拡張性について Job Queueを使う上でTheSchwartzではなくQudoを使った利用に、 「TheSchwartzはオーバースペック」 「たくさんカスタマイズ詩たいわけではない」 ⇩ 「Qudoがちょうどよさそう」 とあったのですが、Qudoは拡張性が高

  • 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 を安全に停止する - 酒日記 はてな支店
  • 第10回 ジョブキューで後回し大作戦―TheSchwartz、Qudo、Q4M(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはnekokakさんこと小林篤さんで、テーマは「ジョブキューで後回し大作戦」です。 ジョブキューとは 一時代前は時間のかかる処理もすべてWebアプリケーションで行っていましたが、最近ではいろいろな部分で処理の非同期化が行われるようになってきました。たとえばWebのインタフェース側ではAjaxがその最たるものでしょう。アプリケーションのバックグラウンド側でも今回のテーマであるジョブキューと呼ばれるしくみが多く利用されるようになりました。ジョブキューを賢く上手に利用することで、ユーザにストレスを与えることなく、またサーバのリソースも有効に使えるようになります。 ジョブキューは延々と動き続けるバッチ処理、というイメージが最もわかりやすいでしょう。通常のバッチ処理であればcrondを利用し、一定周期でプログラムを起動して

    第10回 ジョブキューで後回し大作戦―TheSchwartz、Qudo、Q4M(1) | gihyo.jp
  • TheSchwartz / Gearman のワーカープロセス管理WorkerManager - stanaka's blog

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

    TheSchwartz / Gearman のワーカープロセス管理WorkerManager - stanaka's blog
  • TheSchwartzのworkerをテストする - Kentaro Kuribayashi's blog

    いま、MankiwというTheSchwartz/Gearmanのclient/worker/woker managerをいい感じにするモジュールを作っています。 https://github.com/kentaro/perl-mankiw これを作る過程で、TheSchwartzのworkerをテストする際に、こういう感じでやったらいいのかなーとやってみたので、ちょっと書いてみます。 workerのテストはなかなか書きにくいものです。ロジックは別のクラスにしておいて、workerからはそのクラスにパラメタを与えて呼び出すだけ、という感じにしておくのがテスタビリティ的にいいのだとは思いますが、まあ、実際ちゃんとTheSchwartz経由でテストしてみないことには安心できません。しかしその場合、TheSchwartzのworkerは、その性質上、非同期に動作するので、テストが面倒です。 そこで

    TheSchwartzのworkerをテストする - Kentaro Kuribayashi's blog
  • 1