将元数据保存到Sidekiq上的作业

时间:2017-08-01 21:27:25

标签: ruby-on-rails ruby redis sidekiq

使用Sidekiq时是否可以将元数据保存到作业?

例如,我想将验证作为后台作业执行,以便在完成后,遇到的任何错误都将作为元数据保存在作业中。

如果可以,我可以在作业完成或死亡后恢复此元数据吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

Sidekiq没有开箱即用,但我用sidekiq-status

完成了这项工作

例如,在您的方案中,它看起来像这样:

class ValidatorJob
  include Sidekiq::Worker
  include Sidekiq::Status::Worker 

  def perform(*args)
    # Run validations

    # after they are done, you can store any data with the store method
    store attr1: 'failed'
  end
end

答案 1 :(得分:0)

完成作业后,您无法恢复任何状态。

似乎在您的情况下,您需要将数据保存或发送到其他地方(如数据库)以便稍后阅读并采取措施。

答案 2 :(得分:0)

是的,Sidekiq提供了中间件(客户端和服务器)以及向工作添加元数据的可能性。

  def call(worker_class, job, queue, redis_pool)
    # return false/nil to stop the job from going to redis
    return false if queue != 'default'
    job['customer'] = Customer.current_id
    yield
  end

检查this link中的文档。