【问题标题】:Do I need to clear out my Resque 'processed' queue?我是否需要清除我的 Resque“已处理”队列?
【发布时间】:2013-09-11 22:00:14
【问题描述】:

我正在使用 Resque(和 redis)为我的 Rails 3 应用程序发送通知电子邮件。

我正在使用 Whenever crontab gem 每 30 分钟将作业排入队列,以检查是否需要发送通知。

我注意到在resque-web 界面中,每次成功完成时都会有一个“已处理”作业。即使我重新启动 redis 和我的服务器,这个“完成”队列似乎永远不会清除。这本身并不困扰我,但我想确保我不应该以某种方式清除它或其他东西。所有这些已完成的工作只是坐在 Redis 中消耗内存吗?当达到一定长度时,Redis 会自动从最旧的开始清除它们吗?

谢谢

【问题讨论】:

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


【解决方案1】:

Redis 中已处理的键包含有关 Resque 总共处理了多少作业以及不同工作人员处理的信息。

一旦工作人员处理完一项工作,就会在工作人员上调用done_working,该工作人员调用processed!

def processed!
  Stat << "processed"
  Stat << "processed:#{self}"
end

Stat 是 Resque 的模块,用于跟踪 Resque 实例的统计信息。它只保留整数,它不存储所有已完成作业的历史记录,只是整数计数,例如:

  • 总共有多少作业失败
  • 特定工作人员有多少作业失败
  • 总共处理了多少作业
  • 特定工作人员处理了多少作业

查看模块源码时可以看到,&lt;&lt; 只是增加一个整数:

def <<(stat)
  incr stat
end

你不应该担心冲洗它。与您拥有的工人数量成正比的数据非常少。 Resque 确实保留了失败的工作,但这是一件好事,可能不应该刷新。

【讨论】:

  • 所以基本上你应该 Resque 会从 Redis 中删除所有已完成的作业?我正在使用redistogo,所以我不确定是否必须在数据库满时手动刷新数据库。据我了解,Resque 只会阻塞失败的工作。是吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 2012-01-21
  • 2021-10-23
  • 2017-02-05
  • 1970-01-01
  • 2017-07-13
相关资源
最近更新 更多