Resque工作人员可以在没有运行redis副本的情况下运行吗?

时间:2012-09-20 04:11:39

标签: ruby-on-rails-3 resque

我用:

开始一个工人
rake environment resque:work RAILS_ENV=development VVERBOSE=1 QUEUE=* LOGFILE=/Users/matteo/workspace/APP/log/resque.log --trace

我得到了输出:

** Invoke environment (first_time)
** Execute environment
** Invoke resque:work (first_time)
** Invoke resque:preload (first_time)
** Invoke resque:setup (first_time)
** Execute resque:setup
** Execute resque:preload
** Invoke resque:setup 
** Execute resque:work

快速ps告诉我该过程正在运行。

现在我没有运行Redis的实例。快速ps auxwwww | grep redis-server确认了这一点。

工人不应该失败吗?

我下载了resque代码,并在worker.rb中的resque代码中添加了一个断点:

(rdb:1) eval redis
#<Redis::Namespace:0x007f868cb57880 @namespace=:resque, @redis=#<Redis client v2.2.2 connected to redis://127.0.0.1:6379/1 (Redis v0.07)>>

这个端口上怎么可能没有运行? 谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

答案是:“不,没有Redis运行副本,工人就无法运行。”

问题是由fakeredis宝石引起的。即使gem没有包含在开发环境中,开发人员也需要“redis / connction / memory”,因此使用fakeredis实例。

答案 1 :(得分:1)

Resque definetely需要redis才能工作,虽然看起来你的队列已启动,但如果没有redis,它将无法处理。

您可以在启动服务器后转到此网址查看您的队列状态...

http://localhost:3000/resque/overview

即如果你的gemfile中有以下内容

gem 'resque', :require => "resque/server"

如果您没有该设置,请在控制台resque-web中运行此操作,以便在localhost:3000/overview

访问管理界面

如果您没有收到错误并且可以在没有redis错误的情况下访问该页面,则redis必须在某处运行,可能作为启动时的服务?

有关基本的redis / resque设置,请参阅此处 - http://railscasts.com/episodes/271-resque?view=asciicast