Рекомендуется ли удалять или убивать неработающую работу внутри промежуточного программного обеспечения? Я не смог найти документацию по этому вопросу в вики. FWIW, я использую sidekiq-pro.Sidekiq удалять или убивать работу внутри промежуточного программного обеспечения
Одна вещь, которую я заметил, была, хотя у меня был правильный идентификатор работы, работа не была убита. Возможно ли, что задание sidekiq получает другой идентификатор, когда он находится в очереди?
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
Спасибо за ответ Майка, мне было интересно, когда будет отображаться: D Но в данном случае мне нужно убить задание, потому что мы больше не хотим его в очереди повторных попыток. Это не удастся, если он получит эти статусы. – hyde
А я получаю то, что вы говорите, так что это означает, что он также должен исчезнуть из очереди повторов. Я сделаю это и доложу вам. – hyde
Задание переносится из набора повторов в очередь для выполнения. Нет ничего, чтобы удалить из набора повторов. –