1

Queue_Classic gem を使用する Rails 3.2 アプリがあり、Heroku にデプロイされています。

heroku run rake qc:work現在、コマンドラインで実行しない限り、キューに入れられたジョブは処理されていません。

以下を含む Procfile を追加しました。

worker:  bundle exec rake qc:work

heroku run rake qc:work手動で実行しない限り、まだキューの処理はありません。

私は何が欠けていますか?

このアプリは Unicorn を使用していますが、影響はありますか?

4

3 に答える 3

1

通常、ワーカーは Web プロセスから独立して実行されます。ワーカーを実行するには、1 つのワーカーを実行するようにプロセス フォーメーションを設定する必要があります。

$ heroku scale worker=1
于 2012-09-19T17:06:27.630 に答える
0

*必ずプライマリ Rakefile に queue_classic と queue_classic/tasks を含めてください。*

于 2012-06-29T11:35:05.097 に答える
0

いくつか掘り下げた後、次の解決策を思いつきました。

これが最善のアプローチなのか、Web プロセスなどをスケーリングする際にどのように動作するのかはわかりませんが、今のところ機能しています。

いつものようにユニコーンをセットアップしました。

#Procfile
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb 

次に、次の構成を追加しました

#unicorn.rb
worker_processes 3 
timeout 30

@qc_pid = nil

before_fork do |server, worker|
  @qc_pid ||= spawn( "bundle exec rake qc:work" )
end
于 2012-07-03T10:05:03.260 に答える