【问题标题】:Save metadata to jobs on Sidekiq将元数据保存到 Sidekiq 上的作业
【发布时间】:2018-01-08 22:01:47
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

    标签: ruby-on-rails ruby redis sidekiq


    【解决方案1】:

    是的,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 获取文档。

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

      【解决方案3】:

      当作业完成时,您无法恢复作业的任何状态。

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

      【讨论】:

        猜你喜欢
        • 2014-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-02
        • 1970-01-01
        • 2013-11-14
        • 2016-03-01
        • 1970-01-01
        相关资源
        最近更新 更多