2012-03-26 7 views
5

私の環境はrails 3.1、heroku bamboo stack、delayed_job_active_record、(https://github.com/collectiveidea/delayed_job)であり、雇用を実験しています。 (https://github.com/meskyanichi/hirefire) - delayed_jobキューのドキュメントを見ることができますが、これを英雄にどうやって適用しますか?ジョブとヒーローをジョブのプールに分割するにはどうすればよいですか?

私は3人の従業員を捧げるのに必要な1時間ごとに生成されるタスクの最大の優先順位を持っています。完了には約26分かかります。その間、あまり重要ではないバックグラウンドタスクを続ける必要があります。

そこで、この優先度のタスクのブロックを名前付きキューに入れるように設定します。 'hourtask'を実行してから、他のすべてのものを 'everythingelse'と名付けてください:)

質問はどうやって特定の待ち行列に専任者を捧げますか?それはドキュメントごとに環境変数と関係していますか?

# Set the --queue or --queues option to work from a particular queue. 
$ RAILS_ENV=production script/delayed_job --queue=tracking start 
$ RAILS_ENV=production script/delayed_job --queues=mailers,tasks start 

しかし、私は私のHerokuの制作環境にこれを適用する方法を動作するようにHerokuのセットアップと十分に熟知していないよ:それは言いますか?

答えて

14

それが遅れ、ジョブ3のREADMEにあります:まだDJスタイルの優先順位を維持しながら

DJ 3はResqueスタイルという名前のキューを紹介します。目標は、個別にスケーリングして制御できるワーカーの別々のプールによって作業するタスクをグループ化するためのシステムを提供することです。

ジョブはキューオプションを設定することにより、キューに割り当てることができます

object.delay(:queue => 'tracking').method 

Delayed::Job.enqueue job, :queue => 'tracking' 

handle_asynchronously :tweet_later, :queue => 'tweets' 

スクリプト/ delayed_jobは仕事を離れて作業を開始しますバックグラウンド・プロセスを管理するために使用することができます。

これを行うには、gemfileにgem "daemons"を追加し、rails generate delayed_jobを実行したことを確認してください。

あなたは、次の操作を行うことができます

$ RAILS_ENV=production script/delayed_job start 
$ RAILS_ENV=production script/delayed_job stop 

# Runs two workers in separate processes. 
$ RAILS_ENV=production script/delayed_job -n 2 start 
$ RAILS_ENV=production script/delayed_job stop 

# Set the --queue or --queues option to work from a particular queue. 
$ RAILS_ENV=production script/delayed_job --queue=tracking start 
$ RAILS_ENV=production script/delayed_job --queues=mailers,tasks start 

作業をオフにキューをキュー(複数可)環境変数を設定することによって。

worker1: QUEUE=tracking rake jobs:work 
worker2: QUEUES=mailers,tasks rake jobs:work 

をし、それらを個別にスケーリング:

QUEUE=tracking rake jobs:work 
QUEUES=mailers,tasks rake jobs:work 

Herokuの上、ごprocfileでは、2つのエントリを作成するだけでなくHireFireについて尋ね

heroku ps:scale worker1=2 worker2=1 

など

+0

私はherokuで4人の作業員にスケーリングすると、名前付きキューaを実行するように3人を設定し、名前付きキューbを排他的に処理する人は1人を設定します。 – Dave

+0

更新された回答。 –

+0

"procfileとプロセス管理コマンド(heroku runとheroku scale)はCedarスタックでのみ利用できます。" - 私はBamboo上にあり、設定方法は不明ですが、procfileを使用することはできません。私は思っていませんか? http://devcenter.heroku。com/articles/procfile – Dave

1

元の質問を。現時点では、HireFireは自動スケーリングを困難にする名前付きキュー(see HireFire website)をサポートしていません。

+0

アップデートとして、HireFire _does_は名前付きキューをサポートするようになりました。私は幸せなHireFireの顧客です。 HireFire howtoここ:http://hirefire.io/documentation/guides/rails-3-integration –

関連する問題