4

我正在使用本指南来设置 Resque 与 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队列中的任务。我不需要它自动完成。

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> 

我还没有尝试过,但也有一个gem 可以手动执行此操作,但听起来你想自动化它。

于 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 上启动单个工作人员,请使用:

? heroku workers 1

要关闭后台工作人员,请执行以下操作:

? heroku workers 0

要使用 5 个工人,请执行以下操作:

? heroku workers 5

Heroku 按您运行的每个工人的秒数向您收费。如果您登录 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(和延迟工作)工作人员。

于 2011-08-30T21:06:20.240 回答