我有这个小的ruby应用程序,而不是Ruby on Rails - 纯Ruby.
我按照说明操作,我可以排队,看看所有内容都正确排队使用resque-web.
但是,我有一个问题,即开始一个工人.文档指示运行bin/resque work以启动工作程序.
这样做会触发消息 -bash: bin/resque: No such file or directory
在互联网上的每个地方,人们都有同样的问题,但对于Rails应用程序,不是纯粹的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
Run Code Online (Sandbox Code Playgroud)
你正在寻找的(开始一个工人)是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
Run Code Online (Sandbox Code Playgroud)
然后在一个终端类型TERM_CHILD=1 QUEUE=default rake resque:work.这将启动worker,查看名为default的队列.它将打印出作业传递给其perform类方法的任何参数.
在第二种终端类型中rake hello.这将为类排队Worker,将字符串hello作为参数传递(将传递给类中的perform方法Worker).它知道default通过查看@queue属性来推送队列Worker.
你会看到在你启动工人的终端打印你好.
这个例子没有做任何有用的事情,你不会把所有这些都放在rakefile中,但我认为这是一个很好的起点,你可以开始修改它并构建自己的rakefile.