在resque队列中查找特定作业

Ron*_*nze 9 ruby ruby-on-rails resque redis

在我的应用程序中,我使用Resque来调整图像大小.如果图像在调整大小队列中,我想显示"调整大小图像"图标.

这意味着我需要能够找到与队列中特定模型ID相关的所有当前作业.现在我这样做:

Resque.peek(:resize, 0, 100).find_all { |job| /#{model.id}/.match(job["args"][0]) }
Run Code Online (Sandbox Code Playgroud)

这是愚蠢的.但有没有办法查询Resque队列以找到第一个参数等于[id]的所有作业?

提前致谢.

Dav*_* J. 10

resque状态一试.它是Resque的扩展,可添加作业跟踪.

resque-status提供了一组简单的类,它们扩展了resque的默认功能(0%猴子修补),为应用程序提供了跟踪特定作业实例及其状态的方法.它通过提供作业实例UUID并允许作业实例在其迭代中报告其状态来实现此目的.

注意:d11wtq上面提到了这个评论,但实际上是目前为止最好的答案.


Sri*_*nan 5

您应该将图像元数据与模型一起存储,而不是查询resque队列.

让我们假设您正在存储产品图像.您可能使用Redis哈希来存储产品详细信息.只需添加另一个这样的标志 -

hset product:123 is_resizing true

您可以执行简单查找以显示调整大小图像图标.在resque作业结束时,删除is_resizing密钥,然后添加resized_image_url密钥.