Heroku で Ruby/Rails を実行していて、ワーカーをスケーリングしたい..
Heroku には、ワーカーをスケーリングするためのこの優れた API があります。
heroku.post_ps_scale(APP_NAME, 'worker', count)
#brings up new worker dyno's, or scales down
問題は、ワーカーがキューを認識していないことです... 2 つのクライアントがあり、それぞれが遅延ジョブで独自のキューを取得する場合。その後、彼らのタスクは互いに衝突します。
ワーカーを別のキューで動作させるが、それらはワーカーを開始したアプリと同じ dyno (別名 Web dyno) 上にあります。
cmd = "rake jobs:work WORKER=STYLE_SERF QUEUES=#{queue}"
Rush::Box.new[Rails.root].bash( cmd, :background => true )
質問
キュー対応のワーカー dyno を作成するにはどうすればよいですか?
上記のコードの組み合わせになると思います。
編集: procFile を使用することを提案する人もいます。私が直面する問題は、必要になる数またはワーカー キューがわからないことです。特定のキューで作業する「緊急」または「due_yesterday」ワーカーを設定するのに最適ですが、クライアントごとにキューが必要です。
したがって、worker_1 は client_1 ジョブで動作し、worker_2 は client_2 ジョブで動作します。決して他に渡ることはありません。
client_1 が 1 時間ごとに製品の更新を行い、client_2 が 1 週間に 1 回行うことは容易に想像できます。
拡張質問 (編集に基づく) 実行時に procfile を調整できますか? それはファイルですか、それともコードにコンパイルされていますか? アクセス可能なファイルであれば、おそらくワーカー タイプを「作成」できます。