我有这个小的ruby应用程序,而不是Ruby on Rails - 纯Ruby。
我已按照说明进行操作,并且可以使用resque-web
对所有内容进行排队。
但是,我有一个问题就是开始一个工人。文档指示运行bin/resque work
以启动工作人员。
这样做会触发消息-bash: bin/resque: No such file or directory
互联网上的每个地方,人们都有同样的问题,但对于Rails应用程序,不是纯粹的Ruby。解决方案似乎在rakefile中包含了一些我没有的东西。
如何启动我的工作人员?非常感谢!
答案 0 :(得分:6)
解决问题的关键是耙。
Resque包括三个rake任务。您只需要一个rakefile,需要'resque/tasks'
才能使用它们。当您向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
您正在寻找的(启动一名工作人员)是resque:work
。您可以使用QUEUE
环境变量告诉它要侦听哪个队列。所以启动你的工作人员会是这样的:
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
中。这将启动工作人员,观察名为默认的队列。它会打印出作业传递给perform
类方法的任何参数。
在第二个终端类型rake hello
中。这将为Worker
类排队作业,将字符串hello
作为参数传递(将传递给perform
类中的Worker
方法)。它知道通过查看default
上的@queue
属性来推送到Worker
队列。
您将在启动工作人员的终端中看到 hello 。
这个例子并没有做任何有用的事情,你也不会把所有这些都放在你的rakefile中,但我认为这是你开始修改它并建立自己的好起点。