我正在使用本指南设置Resis with Redis 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队列中手动触发任务。我不需要它自动完成它。
答案 0 :(得分: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>
我还没有尝试过,但还有一个gem for doing this manually,听起来你想要自动化它。
答案 1 :(得分:3)
要与heroku worker集成,您需要实现一个名为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上启动单个工作人员:
? heroku workers 1
要关闭后台工作人员,请执行以下操作:
? heroku workers 0
要使用5名工人,请执行以下操作:
? heroku workers 5
Heroku会为您运行的每个工人向您收取第二个费用。如果您登录heroku,您将能够在应用的资源页面上查看当前工作人员的费用。
答案 2 :(得分:1)
在Heroku Cedar Stack上,这很简单,这是将工作人员数量更改为n
您将运行此命令的命令,它会杀死/创建工作人员以实现n
。
heroku ps:scale worker=n --app your-app-name
有关详细信息,请参阅Heroku上的这篇文章:https://devcenter.heroku.com/articles/scaling
答案 3 :(得分:0)
你试过HireFire吗?
它专门用于扩展Heroku上的Resque(和Delayed Job)工作人员。