使用Sidekiq时是否可以将元数据保存到作业?
例如,我想将验证作为后台作业执行,以便在完成后,遇到的任何错误都将作为元数据保存在作业中。
如果可以,我可以在作业完成或死亡后恢复此元数据吗?
提前致谢。
答案 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中的文档。