我有这个小型 ruby 应用程序,不是 Ruby on Rails - 纯 Ruby。
我已按照说明进行操作,我可以使用 resque-web
对内容进行排队并查看所有内容是否已正确排队。
但是,我在启动一个 worker 时遇到了问题。文档指示运行 bin/resque work
以启动工作程序。
这样做会触发消息 -bash: bin/resque: No such file or directory
网上到处都是同样的问题,但是对于Rails app,不是纯Ruby。该解决方案似乎在 rakefile 中包含了一些我没有的东西。
如何启动我的工作器?非常感谢!
最佳答案
解决问题的关键是抽成。
Resque 包括三个 rake 任务。您只需要一个需要 'resque/tasks'
的 rakefile使用它们。当您向 Rake 询问其命令列表时,您将看到 Resque 中包含的三个任务:
rake resque:failures:sort # Sort the 'failed' queue for the redis_multi_queue failure backend
rake resque:work # Start a Resque worker
rake resque:workers # Start multiple Resque workers
您正在寻找的(启动一名 worker )是 resque:work
.您使用 QUEUE
告诉它要收听哪个队列环境变量。所以开始你的 worker 会是这样的:
QUEUE=your_queue_name rake resque:work
.
或者,您可以使用 QUEUES=*
监听所有队列.
编辑:
这是一个更完整的例子。创建一个名为 rakefile
的文件:
require 'resque/tasks'
require 'resque'
class Worker
@queue = :default
def self.perform(my_arg)
puts my_arg
end
end
task :hello do
Resque.enqueue(Worker, 'hello')
end
然后在一个终端中输入 TERM_CHILD=1 QUEUE=default rake resque:work
.这将启动 worker,监视名为 default 的队列。它将打印出作业传递给其 perform
的任何参数类方法。
在第二个终端输入 rake hello
.这将为 Worker
排队工作类,传递字符串 hello
作为参数(将传递给 perform
类中的 Worker
方法)。它知道推送到 default
通过查看 @queue
进行排队属性(property) Worker
.
您会在启动 worker 的终端中看到打印的 hello。
这个例子没有做任何有用的事情,你不会把所有这些都放在你的 rakefile 中,但我认为这是一个很好的起点,你可以开始修改它并构建你自己的。
关于Ruby 应用程序和 Resque : can't start workers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27432899/