Resque Gem : RORのバックグラウンドプロセス用

エレガントで楽しい?これらのフレーズは、プログラミング言語を連想させるものではありません。右?しかし、これこそが Ruby on Rails なのです。 Ruby on Rails (一般的には単に Rails と呼ばれます) は、シンプルでユーザーフレンドリーなきれいな構文を備えた純粋なオブジェクト指向プログラミング言語です。シンプルで使いやすいということは、他のプログラミング言語よりもはるかに早く Web アプリケーションを準備できることを意味します。稼働させるために必要なのは、Web サーバーとデータベースだけです。そしてもちろん、宝石もいくつかあります! Ruby の最も優れた点の 1 つは、「宝石」と適切に呼ばれる、分類された再利用可能なコードの膨大なリストです。 Ruby on Rails の利点は、これらの gem の助けを借りて、他のテクノロジと比較してかなり少ない労力で簡単にアプリケーションを作成できるという事実にあります。バックグラウンドジョブを作成するための宝石である Rasque について知るために読んでください。 Resque は Redis を使用してバックグラウンド ジョブを作成します。複数のキューをサポートしているので、それらを複数のキューに配置し、後で処理することもできます。また、キューを監視および管理するための管理インターフェイスも付属しています。 Resque は、大量のジョブ エントリが必要な状況で使用することを目的としており、Web ダッシュボードを使用して統計を提供しながら、動作の反映性と一貫性を確保するメカニズムを提供します。 Web アプリケーションのリクエスト サイクル内で実行する必要のないコードの長い処理ブロックがある場合、バックグラウンド処理キュー システムが唯一の適切なソリューションです。したがって、Ruby アプリケーションのパフォーマンスが向上します。 Resque は DelayedJob から大幅にインスピレーションを得ていますが、APP で複数のキューが必要な場合は、おそらく Resque の方が良い選択です。 次の場合に [レスク] を選択します。
  • 複数のキューが必要です
  • 数値的な優先順位はあまり気にしない
  • 巨大なキューを扱う場合
  • Redis を使用している
  • RAM が不足することはありません
利用可能なオープン ソース キュー システム (layed_job、beanstalk) が多数あるため、独自のキュー システムを作成する必要はありません。ここでは、Ruby on Rails アプリケーションで resque キュー システムをセットアップする方法について説明します。 レスクセットアップ:
bash: brew install redis redis-server /usr/local/etc/redis.conf resque-web rake resque:work QUEUE='*'
Gemfile:
gem 'resque', :require => “resque/server” 新しい gem をインストールします:bundle install config に redis.yml という名前の redis 構成ファイルを作成します:defaults:&defaults host:localhost port:3002development:<<: *defaults test : <<: *デフォルト ステージング: <<: *デフォルト プロダクション: <<: *デフォルト
resque.rb という初期化ファイルを config/initializers に追加します。
Dir[File.join(Rails.root, 'app', 'jobs', '*.rb')].each { |file|ファイルが必要です } config = YAML::load(File.open(“#{Rails.root}/config/redis.yml”))[Rails.env] Resque.redis = Redis.new(:host => config['ホスト'], :ポート => config['ポート'])
resque.rake を lib/tasks に追加します。
require 'resque/tasks' タスク “resque:setup” => :environment
実行中のレスク:
start redis: redis-server start resque COUNT=5 QUEUE=* rake resque:workers Web UI を参照: resque-web
Resque ジョブを追加する方法:
ジョブ クラスを作成します。 class FeedsCollectionJob @queue = :feeds_collection_job def self.perform(start_date, end_date) put “from #{start_date} to #{end_date}” #TODO 長時間実行プロセスをここに end end
Resque.enqueue(FeedsCollectionJob, start_date, end_date) を使用して実行します。このコマンドはブロックされないため、このコードをモデルに埋め込むことができます。 労働者: さまざまなマシン間で分散でき、コアの優先順位をサポートし、メモリの「リーク」に強く、最適化されています。
Resque ワーカーは、永久に実行される rake タスクです。ループ開始 if ジョブ = 予約ジョブ.プロセス else スリープ 5 # 周波数 = 5 終了 終了 シャットダウン
ワーカーを開始するには:
$ QUEUE=file_serve rake resque:work
アプリケーションをメモリにロードする必要があります。 Resque を Rails プラグインとしてインストールしたら、RAILS_ROOT から次のコマンドを実行できます。
$ QUEUE=file_serve rake 環境 resque:work
したがって、環境がロードされ、ワーカーを開始できるようになります。これ以外に、環境 rake タスクに依存する resque:setup タスクを書くこともできます。
タスク「resque:setup」 => :環境
内省: Resque の動作を内省する方法はたくさんあるはずです。これを行うには、組み込みの Resque Web ダッシュボードが最適な場所であることをお勧めします。 http://localhost:3000/resque ここでは、キュー、ワーカー、現在作業中のジョブ、失敗したジョブとスタック トレース、および有用な Redis 統計を検査できるようにします。コンソールを使用しても同じことができます。
Resque.info Resque.queues Resque.redis Resque.size(queue_name) Resque.peek(queue_name, start=1, count=1) Resque.workers Resque.working
はい、できました!この記事は、resque、その設定方法、より高速なパフォーマンスの Ruby アプリの構築にこの gem がどのように役立つかについて提供したいと考えています。アプリに関する素晴らしいアイデアがあり、それをできるだけ早く開発したいと考えていますか? Ruby on Rails を選択する際には、RailsCarma がアプリ開発に最適な選択肢であることを知っておいてください。 Railscarma は、開発、トレーニング、デプロイ、Rails コミュニティへの貢献のために、初期段階から Ruby on Rails を実装してきました。 最高の Ruby on Rails 開発サービス。 RailsCarma は、コンサルティング、アーキテクチャ、構築、管理、拡張などのエンドツーエンドの Ruby on Rails サービスを世界中の企業に提供します。簡単な雇用プロセスで Ruby on Rails 開発者を雇用することもできます。 お問い合わせ もっと知るために。同様の記事をもっと読む:

最新のアップデートを購読する

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese