我在rails应用程序中使用了resque和resque-scheduler。我在使用resque-scheduler时遇到了奇怪的问题。我的一项工作是,一旦完成“执行”方法,就不会从队列中删除。我需要明确地将其删除以退出队列,然后队列中的其他作业开始执行。
Job类很简单,如:
class FooJob
@queue = :high_volume
def self.perform
puts "FooJob#perform:"
# some method call
end
end
resque_schedule.yml包含:
add_jobs_from_foo:
cron: "15 * * * *"
class: FooJob
description: "enqueue jobs from Foo"
宝石版本有问题吗?还是其他什么?
答案 0 :(得分:0)
你真的通过直接查看redis来验证吗?在perform
开始执行之前,作业将从队列中删除。
答案 1 :(得分:0)
让我们尝试这个宝石“resque-status”
获得工作状态 -
status = Resque::Plugins::Status::Hash.get(job_id)
Resque :: Plugins :: Status :: Hash.get(job_id)对象将返回:
status.pct_complete #=> 0
status.status #=> 'queued'
status.queued? #=> true
status.working? #=> false
status.time #=> Time object
status.message #=> "Created at ..."
获取此宝石并获取详细信息:https://github.com/quirkey/resque-status