是否建议删除或终止中间件中失败的作业?我无法在维基中找到关于此事的任何文档。 FWIW,我正在使用sidekiq-pro。
我注意到的一件事是,即使我有正确的工作ID,工作也没有被杀死。是否可以在sidekiq作业入队时为其分配不同的ID?
STATUSES = {
canceled: 6,
failure: 9,
expired: 10
}.freeze
def call(worker, message, queue)
key = message['args'][0]
jid = message['jid']
if key.present?
// status_id fetched from database
status_id = Req.find(key).status
if STATUSES.values.include?(status_id)
if killable?(message)
job = Sidekiq::RetrySet.new.find_job(jid)
// kill doesn't always succeed because job cannot be found
job.kill
end
end
end
yield
end
def killable?(message)
message.key?('retry_count')
end
答案 0 :(得分:2)
无需“杀死”这份工作,只需返回而不是屈服。这项工作无需执行任何操作即可成功。您可以使用此方法作为将作业发送到死队列的参考:
https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/middleware/server/retry_jobs.rb#L151