4

このガイドを使用して、Redis で Resque をセットアップしていますhttp://blog.redistogo.com/2010/07/26/resque-with-redis-to-go/

私はそれをすべてセットアップしました。何かを入れると、resque キューに表示されます。それはheroku上にあるので、実行します

heroku rake resque:work QUEUE=*
(in /app)
Starting the New Relic Agent.
Installed New Relic Browser Monitoring middleware
Connected to NewRelic Service at collector-1.newrelic.com:80
^C
[canceled]

これでジョブは完了しますが、ワーカーはまだそこにあります。ワーカーを削除/強制終了するにはどうすればよいですか?

私は現在0 of 4 Workers Working、キュー内のタスクが完了した後、ワーカーが自分自身を削除するようにしたいと考えています。どうすればこれを行うことができますか、または呼び出す必要がある別のherokuターミナルコマンドがあります.

また、resque ワーカーは heroku で費用がかかりますか? resque キューでタスクを手動でトリガーできるようにしたいだけです。自動的に行う必要はありません。

4

4 に答える 4

9

これは古い質問ですが、コンソールから実行できます。

$ heroku run console
irb(main):001:0> Resque.working[0].id
=> "09ec127d-bb90-4629-a6f2-bb2610885ab5:62:*"
irb(main):002:0> Resque.working.length
=> 28
irb(main):003:0> Resque.remove_worker("09ec127d-bb90-4629-a6f2-bb2610885ab5:62:*")
=> 0
irb(main):004:0> Resque.working.length
=> 27
irb(main):005:0> 

まだ試していませんが、これを手動で行うための宝石もありますが、自動化したいようです。

于 2012-10-07T01:02:50.627 に答える
3

herokuワーカーと統合するには、jobs:workと呼ばれるrakeタスクを実装する必要があります。これをresqueで機能させるには、次のタスクをrakeファイル(http://blog.redistogo.com/2010/07/26/resque-with-redis-to-go/から取得)に追加する必要があります。

require 'resque/tasks'

task "resque:setup" => :environment do
  ENV['QUEUE'] = '*'
end

desc "Alias for resque:work (To run workers on Heroku)"
task "jobs:work" => "resque:work"

herokuで1人のワーカーを開始するには、次のようにします。

? heroku workers 1

バックグラウンドワーカーをオフにするには、次のようにします。

? heroku workers 0

5人のワーカーを使用するには、次のようにします。

? heroku workers 5

Herokuは、実行するワーカーごとに1秒ごとに課金します。herokuにログインすると、アプリのリソースページで、現在のワーカー数がいくらかかるかを確認できます。

于 2011-08-11T01:13:31.000 に答える
1

Heroku Cedar Stackでは、これは非常に簡単です。これは、nこのコマンドを実行するワーカーの数を変更するコマンドであり、達成するためにワーカーを強制終了/作成しますn

heroku ps:scale worker=n --app your-app-name

詳細については、Herokuのこの記事を参照してください: https ://devcenter.heroku.com/articles/scaling

于 2012-04-10T00:55:01.503 に答える
0

HireFireを試しましたか?

これは、HerokuのResque(およびDelayed Job)ワーカーをスケールアップ/スケールダウンするために特別に設計されています。

于 2011-08-30T21:06:20.240 に答える