8

我已正确安装 resque,但要处理我需要运行的所有队列

rake resque:work QUEUE='*'

问题是我需要保持终端窗口打开,否则 resque:work 将不起作用。

您知道每次我运行“rails server”时自动运行该 rake 命令的方法吗?

我在本地主机上

lib/tasks/resque.rake

require 'resque/tasks'

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

3 回答 3

11

您可以使用像工头这样的 gem 来调用所有其他任务,而不是调用调用函数。如果您希望拥有一个很大程度上与平台无关的解决方案并且同时部署到云中,这将非常有用。您的 Procfile 可以具有以下内容:

web:    bundle exec thin start -p $PORT
worker: bundle exec rake resque:work QUEUE=*
clock:  bundle exec rake resque:scheduler

资料来源:工头介绍

现在要启动服务器,您只需发出 foreman start 命令,该命令会分叉子线程以执行单独的工作。

于 2013-08-16T09:51:22.330 回答
2

编辑:2012年的答案!似乎这仅适用于 Rails 2!

在 config/initializers 中添加一个初始化程序,如下所示:

Rake::Task["resque:work QUEUE='*'"].invoke

未测试!

于 2012-11-10T23:21:30.017 回答
0

最好的方法是

ENV['QUEUE'] = "*"
Rake::Task["resque:work"].invoke
于 2013-08-08T18:17:41.790 回答