我目前正在尝试为我的 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/