如何摧毁雷克斯工人入职的工作?

Kib*_*gon 38 scheduled-tasks resque redis ruby-on-rails-3

我在rails-3项目上使用Resque来处理计划每5分钟运行一次的作业.我最近做了一些事情,滚动了这些工作的创造,堆栈已经打了1000多个工作.我修复了导致许多作业排队的问题,现在我遇到的问题是错误创建的作业仍然存在,因此将作业添加到具有1000多个作业的队列中变得很难测试.我似乎无法阻止这些工作.我尝试使用flushall命令从redis-cli中删除队列,但它不起作用.我错过了什么吗?因为我似乎无法找到摆脱这些工作的方法.

she*_*edd 64

播放上述答案,如果您需要清除所有队列,可以使用以下内容:

Resque.queues.each{|q| Resque.redis.del "queue:#{q}" }
Run Code Online (Sandbox Code Playgroud)


Dyl*_*kow 48

如果弹出一个rails控制台,则可以运行此代码来清除队列:

queue_name = "my_queue"
Resque.redis.del "queue:#{queue_name}"
Run Code Online (Sandbox Code Playgroud)

  • 如下面的@ denmarkin的答案中所示,使用Resque.redis.del而不是Resque.redis.delete (4认同)

iai*_*ton 35

Resque已经有了这样做的方法 - 尝试Resque.remove_queue(queue_name)(参见此处的文档).在内部它执行Resque.redis.del(),但它也进行其他清理,并通过使用api方法(而不是对resque如何工作做出假设),你将更加面向未来.


den*_*kin 14

更新了用于清除的rake任务(根据最新的redis命令更改):https://gist.github.com/1228863


vla*_*iov 13

这是现在有效的:

Resque.remove_queue("...")
Run Code Online (Sandbox Code Playgroud)


Ero*_*lin 5

使用 Resque API 比删除 Resque 的 Redis 上的所有内容更安全、更可靠。Resque 在内部做了一些清洁工作。

如果要删除所有队列和关联的排队作业:

Resque.queues.each {|queue| Resque.remove_queue(queue)}
Run Code Online (Sandbox Code Playgroud)

下次作业排队时将重新创建队列。

文档