並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 85件

新着順 人気順

TheSchwartzの検索結果1 - 40 件 / 85件

  • ウェブアプリケーション開発に新言語を採用したときにインフラで考えたこと - ゆううきブログ

    この文章は、サーバサイドのウェブアプリケーション開発において、社内実績の少ない新しい言語を採用したときにインフラ面で考慮したことを社内向けにまとめたものです。 はてなでは、長らくPerlでウェブアプリケーション開発を続けてきた一方、ここ数年で社内でScalaまたはGoの採用事例も増えてきました。 今後開発が始まるプロダクトにおいても、Perl、Scala、Goもしくは他の言語を採用するかどうかを開発開始時に選ぶことになるでしょう。 新言語を採用するときに、考慮すべきことの一つとして、「インフラ」への影響があります。 新言語に関する雑談をしていると、ウェブアプリケーションエンジニアに「インフラ」への影響について聞かれます。 もしくは、ウェブオペレーションエンジニアから考慮するポイントを伝えることもあります。 ScalaやGo以外に、Node.jsやサーバサイドSwiftはどうかというのも雑談

      ウェブアプリケーション開発に新言語を採用したときにインフラで考えたこと - ゆううきブログ
    • GoとMySQLを用いたジョブキューシステムを作るときに考えたこと - ゆううきブログ

      【追記】2023年3月21日 YAPC::Kyoto 2023で、ジョブキューシステムFireworqの設計と運用実績も含めて発表されました。id:tarao ++ 【加筆修正】 2020年2月16日 執筆時から6年も経過していますが、たまたまこの記事を振り返る機会があったので、日本語がおかしいところを一部修正したり、一緒に取り組んだ方々の名前が書かれていなかったところを修正しました。 【追記】2017年12年24日 このエントリのジョブキュー実装がFireworqという名でOSSとして公開されました。id:tarao ++ github.com この記事ははてなエンジニアアドベントカレンダー2014の4日目です。 前回は Mackerelで採用している技術一覧とその紹介 - Hatena Developer Blog でした。 社内の開発合宿で、 id:taraoさん、id:hakobe

        GoとMySQLを用いたジョブキューシステムを作るときに考えたこと - ゆううきブログ
      • 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

        • Don'tStopMusic - DB分散の次は非同期処理がウェブアプリのスケーリングのトレンドになる , るびま 21 号

          _ [ソフトウェア] DB分散の次は非同期処理がウェブアプリのスケーリングのトレンドになる サイボウズも memcached + MySQL DB 分散 Cybozu Developer Network: MySQL Users Conference Japan 2007 講演概要 を読んで、memcached でキャッシュ& 複数の MySQL をアプリのロジックで分散化というのは、もうすっかりスケーラブルなウェブアプリの作り方として常套手段になったと思いました。 2004 年 4 月の MySQL カンファレンスでの Brad Fitzpatrick の発表 Inside LiveJournal's Backend (PDF)から約 3 年半。Mixi やはてなのようなエッジな企業はだいぶ前からこの構成を採用してますが、対法人のビジネスをしているサイボウズでも採用されたというのは一つ

          • Webアプリケーションにおける Job Queue システムの構成例と Worker を作る際に気をつけること - blog.nomadscafe.jp

            Webアプリケーション内で処理を直列に実行せずにJob Queueに回して非同期に実行することが多くなって来て久しいと思いますが、そのおすすめ構成と気をつけることについてつらつらと。 1) 既存のデータベースをキューとして使う構成例 1つ目はMySQLなどのデータベースをキューとして用いる例。既にアプリケーションで利用しているデータベースにキュー用のテーブルを作成して利用します。データベースを利用したキュー管理の仕組みとしてJonk、Qudo、TheSchwartzなどがPerlでは有名どころです。 依存するミドルウェアが増えないので最もシンプルな構成になると思います。 上記の図ではWorkerはアプリケーション内で実行することで冗長性を確保しますが、キューを格納するデータベースはSPOFになります。しかし、、データベースに障害があった場合キューだけでなくすべてのサービスが停止すると思われ

            • 第2回 Wassr開発の舞台裏 | gihyo.jp

              モバイルファクトリーの技術者の松野です。 今回はWassr(ワッサー)の技術的な側面についてのお話をさせていただきます。 フレームワーク Wassr開始以来、「⁠WassrってRailsでできてるんですか?」とよく聞かれるのですが、WassrはRailsではなくSledgeというフレームワークでできています。Sledgeはlivedoorが公開しているフレームワークで、弊社では創業以来一貫してSledgeを使いつづけています。Sledgeの魅力はその柔軟性にあり、公開されてから数年たった今の現状でも十分実用に耐えるフレームワークです。 サーバ構成 Wassrは2007年6月20日現在、16台構成で動いています。詳細は図1を参照してください。使用しているソフトウェアはすべてオープンソースです。これは、何か問題が起きたときや、そのソフトウェアについていない機能を追加したいときなどに、自分で対応

                第2回 Wassr開発の舞台裏 | 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で仕事をあとにまわす - bits and bytes

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

                  • 第10回 ジョブキューで後回し大作戦―TheSchwartz、Qudo、Q4M(1) | gihyo.jp

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

                      第10回 ジョブキューで後回し大作戦―TheSchwartz、Qudo、Q4M(1) | gihyo.jp
                    • log4ZIGOROu : Gearmanを使ってみた

                      daemonの起動 下記のようにdaemonとして起動します。 daemon起動オプションに関してですが、PODの記載は誤りで--daemonizeでは無く--daemonです。 $ sudo gearmand --daemon --pidfile=/var/log/gearmand.pid --debug=1 関数の登録 次にgearmanに実行させたい処理を予め登録し、さらにjob queを待ち受けるworkerを記述します。 #!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use Gearman::Worker; use Storable qw(thaw); use List::Util qw(sum); my $worker = Gearman::Worker->new; $worker->job

                      • 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

                        • はてなのサーバ管理ツールの話 - YAPC::Asia Tokyo 2013

                          はてなの自社製サーバ管理ツールの思想と設計を紹介します。 はてなでは数千台のホストを運用しており、運用を効率化するためにサーバ管理ツールを自社で開発しています。 このセッションでは、「はてなにおけるサーバ運用に求められるもの」と「パフォーマンスメトリクスの可視化」の話をしたいと思います。 実装言語はもちろんPerlです。 はてなにおけるサーバ運用に求められるもの 数千台ホストの管理 デプロイツール(Capistrano)、監視ツール(Nagios)、プロヴィショニングツール(Chef)との統合 自社データセンタ環境とクラウド環境(AWS)の透過的な管理 パフォーマンスメトリクスの可視化のしくみ MySQLやNginxなどの様々なミドルウェアのメトリクスを取得するためのエージェントの実装 メッセージキュー(TheSchwartz)を用いたエージェントのタスクマネージメント RRDToolを用

                          • TheSchwartz のような RDBMS をつかったジョブキューをリアルタイムに処理するアイディア - tokuhirom's blog

                            TheSchwartz のような RDBMS をつかった job queue は、新規に daemon をたてたりする必要がないので楽でいいのですが、一方で job の追加の timing が storage から push でおくられてこないので、若干の delay が生じてしまうのが難点でした。 この問題を解決するために、mysql の binlog API を用いて、処理してみるハックを考えてみました。 binlog API を利用すると更新クエリを streaming で処理できるので、こういったハックも簡単にできちゃいます。おもしろい。 use 5.016000; use MySQL::BinLog; use TheSchwartz; my $sch = TheSchwartz->new(...) or die; $sch->can_do($_) for ...; $sch->w

                            • ゆーすけべー日記

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

                                ゆーすけべー日記
                              • 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 を安全に停止する - 酒日記 はてな支店
                                • 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 で時間が掛かる 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を使ってみた - libnitsuji.so

                                      TheSchwartzについては以下がわかりやすい。 TheSchwartzは非同期かつ分散した環境で各種ジョブを処理させるという枠組みを再実装して利用しやすくしたもので,MySQL(SQLiteもサポート)上のデータベースにジョブを格納し,各ワーカープールで処理を行って結果を返す,という単純なフレームワークです。 第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
                                      • bayashi.jp

                                        This domain may be for sale!

                                        • TheSchwartz::Worker な Plagger をいっぱい動かす!! - woremacxの日記

                                          Plagger4 月の末に PlaggerLDR にもどった とか言ってたけど、1 時間おきに Plagger まわしてたら、何重にも起動してひどいことになっていて、対策考えるのまんどくさくなってやめてた。1 時間かかっても巡回が終わらない原因は CPU の限界とかではなくて、相手の鯖の反応待ちの積み重ねなので、Plagger を平行動作させればウマーになるのではないかということで、TheSchwartz とくっつけてみることにした。フィード 1 個ごとに Job を 1 個発生させている。また、フィードごとに色々初期化すると重くなる原因なので、最初に読み込んだら読み直さずにずっと使い続けるようにした。Plagger のロード済みの config を書き換える部分は、昔 Catalyst + Plagger で遊んだときのコードそのまんまでうまくいった。eft_worker.pl #!/u

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

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

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

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

                                              • 時間の掛かる処理は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

                                                • 酒日記 はてな支店 - Deamon::Generic で TheSchwartz の worker をデーモン化する(1)

                                                  TheSchwartz の worker をデーモンにしたくて、どうしようかと。daemontools でもいいんだろうけど、CPAN で見つけた Daemon::Generic を使ってみた。 まず TheSchwartz の client (jobを投入する) と worker (jobを実行する) モジュールを普通に作る。 #!/usr/bin/perl # client.pl use strict; use TheSchwartz; use YAML qw/ LoadFile /; my $client = TheSchwartz->new( %{ LoadFile(shift) } ); $client->insert( 'MyWorker' => { t => time } ); package MyWorker; use strict; use base qw/ TheSch

                                                    酒日記 はてな支店 - Deamon::Generic で TheSchwartz の worker をデーモン化する(1)
                                                  • 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 プロセスが太る(のは解決済) - 酒日記 はてな支店
                                                    • Big Sky :: SQLiteを使ってTheSchwart

                                                      最近TheSchwartが賑わってる様ですね。 TheSchwartzで仕事をあとにまわす - bits and bytes なければ勝手に作ってくれるのかなと思ってSYNOPSISのコードを実行してみたけどやっぱり自動でできたりはしなそうだったので調べたらCatalyst and TheSchwartz: Reliable JobQueue in a great framework - Voxにschema.sqlを使うといいと書いてありました。このスキーマをmysqlで実行すればTheSchwartzのキューを管理するためのテーブルが出来上がります。 http://labs.gmo.jp/blog/ku/2008/06/theschwartz.html Twitter / ku: TheSchwartzおもしろかった sqliteで動... TheSchwartzおもしろかった sql

                                                        Big Sky :: SQLiteを使ってTheSchwart
                                                      • 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

                                                            • 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-1.17 - reliable job queue - metacpan.org

                                                                The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

                                                                • 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

                                                                    • TheSchwartz::Test - Hatena::Diary::Neko::kak 500 Internal Server Error

                                                                      というのを書いてみました。 といってもTheSchwartzのt/に入ってるdb-common.plからのほとんどコピペですが、 Pluginとか別パッケージで書く場合にあったほうが便利かなーとか思ったので。 こんなのいかが? 追記:codereposにいれてみました (http://coderepos.org/share/browser/lang/perl/TheSchwartz-Test) 追記:coderepos側のソースをみてもらえば十分なのでけしました

                                                                        TheSchwartz::Test - Hatena::Diary::Neko::kak 500 Internal Server Error
                                                                      • 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は拡張性が高

                                                                        • TheSchwartzStats 0.02公開 - Ogawa::Memoranda

                                                                          • 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
                                                                            • http://www.danga.com/words/2007_yapc_asia/yapc-2007.pdf

                                                                              • TheSchwartzでforkとモジュールの動的リロードを実装実験 - masartz->log(type=>'hatenablog')

                                                                                http://code.google.com/p/themasartz/source/browse/#svn/branches/workerbase ひとまず暫定で↑にコミットしてありますが、構成としては /test_client.pl /test_para_worker.pl /test_worker.pl /test_worker2.pl /lib/MyApp/Async/Test.pm /lib/MyApp/Async/Test2.pm /lib/MyApp/Hoge.pm /lib/TheSchwartz/Worker/Plugin/ModuleReload.pm /lib/TheSchwartz/Worker/Plugin/Parallel.pm こんな感じ。 上から順に。 ・/test_client.pl ジョブを突っ込むpl。2種類のジョブを投入 ・/test_worker.

                                                                                  TheSchwartzでforkとモジュールの動的リロードを実装実験 - masartz->log(type=>'hatenablog')
                                                                                • TheSchwartz

                                                                                  NAME TheSchwartz - reliable job queue SYNOPSIS # MyApp.pm package MyApp; sub work_asynchronously { my %args = @_; my $client = TheSchwartz->new( databases => $DATABASE_INFO ); $client->insert('MyWorker', \%args); } # myworker.pl package MyWorker; use base qw( TheSchwartz::Worker ); sub work { my $class = shift; my TheSchwartz::Job $job = shift; print "Workin' hard or hardly workin'? Hyuk!!\n"; $jo

                                                                                    TheSchwartz