Back to list

Sidekiq - Background Job

Lv.5976@mukitaro11 playsDec 31, 2025

Sidekiq background worker with retry logic, queue configuration, and error handling.

preview.ruby
Ruby
1class ReportGeneratorWorker
2 include Sidekiq::Worker
3
4 sidekiq_options queue: :reports,
5 retry: 3,
6 backtrace: true,
7 dead: false
8
9 sidekiq_retry_in do |count, exception|
10 case exception
11 when RateLimitError
12 60 * (count + 1)
13 else
14 10 * (count ** 2)
15 end
16 end
17
18 def perform(user_id, report_type, options = {})
19 user = User.find(user_id)
20 report = generate_report(user, report_type, options.symbolize_keys)
21
22 ReportMailer.send_report(user, report).deliver_now
23 Rails.logger.info "Report generated for user #{user_id}"
24 rescue ActiveRecord::RecordNotFound => e
25 Rails.logger.error "User not found: #{user_id}"
26 end
27
28 private
29
30 def generate_report(user, type, options)
31 ReportBuilder.new(user)
32 .type(type)
33 .date_range(options[:start_date], options[:end_date])
34 .format(options[:format] || :pdf)
35 .build
36 end
37end

Custom problems are not included in rankings