我用:
开始一个工人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)>>
这个端口上怎么可能没有运行? 谢谢你的帮助
答案 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