ruby - 带有 Resque : enqueuing jobs with uninteded arguments 的 ActiveJob

标签 ruby ruby-on-rails-4 resque rails-activejob

尝试实现某种取消作业功能。为了destroy a job with Resque ,需要传递给它的特定参数。不过,我似乎错误地传递了意外信息。

enter image description here

我只希望参数值位于外括号内。我正在这样创建工作:

PhysicalServerProvisionJob.perform_later('123')                        

我希望能够:

Resque::Job.destroy(:default, PhysicalServerProvisionJob, '123')

但是由于传入了额外的信息,这是不可能的。如果这是不可避免的,是否有另一种方法来销毁特定的排队作业?

最佳答案

因为 Resque::Job.destroy 正在寻找所有参数的精确匹配,所以它对查找 ActiveJob 类没有帮助。

这是我为解决这个问题而编写的脚本:

# Pop jobs off the queue until there are no more
while job = Resque.reserve('default')
  # Check this job for the ActiveJob class name we're looking for;
  # if it does not match, push it back onto a different queue
  unless job.args.to_s.include?('PhysicalServerProvisionJob')
    Resque.push('another_queue', class: job.payload_class.to_s, args: job.args)
  end
end

关于ruby - 带有 Resque : enqueuing jobs with uninteded arguments 的 ActiveJob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35589052/

相关文章:

ruby - Ruby 方法能否作为迭代器产生或根据上下文返回数组?

ruby - AWS Lambda 无法找到 Ruby 依赖项

Rails 4 中具有多个字的 Controller 的路由

ruby-on-rails-3 - 如何让 resque-web 在 Heroku 上工作?

ruby-on-rails - 如何使用 Resque::Failure 配置 Bugsnag?

ruby - 通过 xinetd 从 Ruby 脚本获取客户端 IP

ruby - 来自 NodeJS 的队列请求作业

ruby-on-rails - 不允许发布返回 405 方法

ruby-on-rails - 升级到 Rails 4.1 后跨域请求无效

ruby - Heroku resque 没有 worker