我正在Rails-3项目上使用Resque来处理计划每5分钟运行一次的作业。我最近做了一些工作,使这些工作的创建雪上加霜,而堆栈已达到1000多个工作。我修复了导致许多作业排队的问题,现在我遇到的问题是由错误创建的作业仍然存在,因此由于将作业添加到具有1000多个作业的队列中,因此很难进行测试。 我似乎无法停止这些工作。我尝试使用flushall命令从redis-cli中删除队列,但是没有用。我想念什么吗?因为我似乎找不到摆脱这些工作的方法。

有帮助吗?

解决方案

如果弹出以打开Rails控制台,则可以运行以下代码清除队列: 通用标签

其他提示

根据以上答案,如果您需要清除所有队列,可以使用以下命令: 通用标签

Resque已经有一种执行此操作的方法-尝试执行Resque.remove_queue(queue_name)(请参见文档此处)。在内部它执行Resque.redis.del(),但它也执行其他清理操作,并且通过使用api方法(而不是对resque的工作原理进行假设),您将更具前瞻性。

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

这是现在有效的方法: 通用标签

进入redis控制台: 通用标签

列出数据库: 通用标签

"resque:queue:your_overloaded_queue"-您需要的数据库。

然后运行: 通用标签

或者,如果您要删除队列中的指定作业,请使用 LRANGE 命令从数据库中列出一些值: 通用标签

然后将一个值复制/粘贴到 LREM 命令: 通用标签

其中5-要删除的元素数。

使用Resque API比删除Resque的Redis上的所有内容更安全,更安全。Resque在内部进行一些清洁。

如果要删除所有队列和关联的入队作业,请执行以下操作: 通用标签

下次入队时将重新创建队列。

文档

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top