ruby-on-rails-3 - rails 3 resque-scheduler 没有队列被注册

标签 ruby-on-rails-3 redis rake resque

我目前正在尝试为我的 Rails 3 应用程序设置 resque-scheduler。在我的简单测试应用程序中,我试图在设置 10 秒后使我的用户模型中的 token 过期。

在调用 TokenController 的创建方法来设置 token 时,我使用 Resque.enqueue_in(10.seconds, ExpireToken, :user_id => @user.id) 将新作业加入队列。 ExpireToken 类如下所示:

class ExpireToken
  @queue = :token

  def self.perform(user_id)
    user = User.find(user_id)

    if not user.nil?
      user.update_attribute(:authentication_token, nil)
    else
      raise
    end
  end
end

在启动 resque 服务器、rails 服务器并使用 rake resque:work QUEUE=* 启动一个 worker 后,我看到 0 个队列在 resque 管理界面中注册,有 1 个空闲的 worker。结果,我没有看到任何工作,因为没有队列。

在我的 redis 服务器中,我确实看到了一些像这样的事件:

[1691] 02 Apr 00:07:51 - DB 0: 2 keys (0 volatile) in 4 slots HT.
[1691] 02 Apr 00:07:51 - 3 clients connected (0 slaves), 948880 bytes in use

如何注册token队列?

最佳答案

事实证明,在处理第一个作业之前,队列不会显示在 resque 管理界面中。为了在我的情况下在 resque-scheduler 中发生这种情况,我必须执行以下操作:

1) 启动 Rails 服务器(在我的 Controller 方法之一中触发 Resque.enqueue_in 方法。

2) 启动redis服务器开始接受worker和jobs。

3) 启动将拉取延迟作业的 resque 调度程序(重要!)

4) 启动 resque worker 来处理进来的工作。

5) 喜欢看工作在界面中被吞噬!

关于ruby-on-rails-3 - rails 3 resque-scheduler 没有队列被注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15746990/

相关文章:

ruby-on-rails - 是否可以在 rake 任务中包含模块并使其方法可用于 rails 应用程序中的任务?

ruby-on-rails-3 - 使用远程 Postgres 数据库安装 Postgres Gem PG

nosql - 保持集合成员在 Redis 中排序

caching - 无法连接到 redis ://localhost:6379/0: Error 99 connecting to localhost:6379. 无法分配请求的地址

Rails 迁移过程中默认十进制值的 MySQL 错误

ruby - 当你运行 "rails server"时,你如何让 ruby​​ 版本与你看到的 "ruby -v"相匹配?

ruby-on-rails-3 - 设计一个简单的登记表

redis - 是否可以减少 Redis 中的 HyperLogLog 集

Ruby Rake 从 gem 加载任务

ruby - 即使明确给出路径,jenkins 也无法找到 rake 安装