タグ

バッチに関するmonochromeganeのブックマーク (4)

  • 巨大なバッチを分割して構成する 〜SQLバッチフレームワークBricolage〜 - クックパッド開発者ブログ

    トレンド調査ラボの青木峰郎(id:mineroaoki)です。 好きなRubyのメソッドは10年前からString#slice(re, nth)ですが、 最近はRubyよりCoffeeScriptとSQLのほうが書く量が多くて悩んでいます。 今日はわたしが開発している「たべみる」の背後で働いている 巨大バッチの構成について話したいと思います。 たべみるのバッチは約3000行のSQLで構成されており、 処理時間が1日で4時間程度かかる、そこそこの規模のプログラムです。 このバッチ処理プログラムをBricolage(ブリコラージュ)というフレームワークで構造化する手法について説明します。 「たべみる」とは まず最初に、「たべみる」がどういうものなのかごく簡単にお話ししておきましょう。 「たべみる」は企業のみに提供しているB2Bの分析サービスで、 クックパッドレシピ検索の分析をすることができま

    巨大なバッチを分割して構成する 〜SQLバッチフレームワークBricolage〜 - クックパッド開発者ブログ
  • Ruby - ファイルロックを利用した排他処理 - Without Truth

    2012-11-08 Ruby - ファイルロックを利用した排他処理 Ruby プログラミング 簡単な排他処理が必要になったので覚え書き File.open("lockfile",'w') do |f| # ロック開始。 # File::LOCK_NB を指定しているので既にロックされている場合は # ブロッキングされずに false になる。 if f.flock(File::LOCK_EX | File::LOCK_NB) # ロックに成功 # 排他処理をココに記述。とりあえず 10秒スリープ sleep(10) # ロックを解除 f.flock(File::LOCK_UN) else # 既にロックされている end end File - Rubyリファレンスマニュアル without-truth 2012-11-08 11:13 コメントを書く 次の記事 前の記事

  • Ruby/Railsでロックファイルによる排他制御 | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、鈴木です。 バッチ処理を作成する時に、気を付けなければならないことの一つに、排他制御があります。 排他制御を行なう方法はいくつかありますが、今回はロックファイルによる排他制御を行なうコードを考えます。 排他制御を忘れると 排他制御を忘れていると、 cron で定期的にパッチ処理を起動するように設定した。 前回起動されたバッチ処理がまだ終了していなかったので重複して起動された。 そんな状況は考慮していなかったので、バッチ処理中にエラーが発生した。データ不整合が発生した。 といったことになりかねません。 ロックファイルによる排他制御とは、以下のような手順で排他的に処理を実行する方法のことを言います。 バッチ処理の最初にファイルをロックする。( File#flock() を使用します ) ロックに失敗したら、処理を終了する。( or ロックが取得できるまで待機する ) 来の処理を実

  • Ruby on Railsでバッチ処理 - 戯言メイテル

    やりたいこと Rails上でバッチ処理を実行したい。 方法 rails runnerコマンドを使う。 rails runnerコマンドで実行するプログラムの作成 $ vi lib/tasks/anime_tweets_collect_task.rb # coding: utf-8 require 'anime_tweets_searcher' require 'anime_tweets_register' class Tasks::AnimeTweetsCollectTask # メイン処理 def self.execute # Active Recordを使用したDBアクセスが可能 chapters = Chapter.all ・ ・ ・ end end 実行プログラムからrequireするクラスはlib配下に格納 $ vi lib/anime_tweets_searcher.rb $

    Ruby on Railsでバッチ処理 - 戯言メイテル
  • 1