3

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

在调用来设置令牌的 TokenController 的 create 方法中,我用来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=* 启动工作人员后,我看到在 resque 管理界面中注册了 0 个队列,其中 1 个空闲工作人员。结果,我没有看到任何工作,因为没有队列。

在我的 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队列?

4

1 回答 1

2

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

1) 启动 rails 服务器(在我的一个控制器方法中触发 Resque.enqueue_in 方法。

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

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

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

5)享受在界面中看到工作被吞噬!

于 2013-04-02T14:16:32.140 回答