0
내 sidekiq worker가 음성 인식 결과를 얻기 위해 get 요청을 사용하면 응답 상태가 "SUCCESS"또는 "FAILED"또는 "RUNNING"이됩니다. 상태가 "실행 중"이면 10 분 안에 sidekiq 작업자를 다시 시도하고 싶습니다. 잠자기없이 재 시도하거나 예외를 제기 할 수 있습니까? 수면은 너무 많은 리소스를 소비하고 예외를 발생 시키므로 기록하고 싶지 않은 새로운 오류 로그가 남습니다.예외를 발생시키지 않고 sidekiq worker를 다시 시도하는 방법
class GetAsrTextWorker
include Sidekiq::Worker
sidekiq_options :queue => :default, :retry => 5
sidekiq_retry_in do | count|
600 * (count + 1)
end
def perform(task_id):
# get request to get the outcome
if status == "SUCCESSD"
# save the outcome
elsif status == "FAILED"
raise AsrError
elsif status == "RUNNING"
raise "Asr running"
end
rescue AsrError => e
Sidekiq.logger.error e.message
end
end
이 방법은이 작업자를 다시 시도하지만 녹음하고 싶지 않은 newrelic에서 오류가 발생할 수 있습니다.
# app/workers/foo_worker.rb
class FooWorker
include Sidekiq::Worker
def perform
raise RetryJob
end
end
:
# lib/retry_job.rb
class RetryJob < StandardError; end
예외를 제기 근로자를 정의
당신이 올릴 수있는 사용자 정의 예외를 정의