Back to listRuby
Sidekiq - Background Job
Lv.5976@mukitaro11 playsDec 31, 2025
Sidekiq background worker with retry logic, queue configuration, and error handling.
preview.ruby
1class ReportGeneratorWorker2 include Sidekiq::Worker3 4 sidekiq_options queue: :reports,5 retry: 3,6 backtrace: true,7 dead: false8 9 sidekiq_retry_in do |count, exception|10 case exception11 when RateLimitError12 60 * (count + 1)13 else14 10 * (count ** 2)15 end16 end17 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_now23 Rails.logger.info "Report generated for user #{user_id}"24 rescue ActiveRecord::RecordNotFound => e25 Rails.logger.error "User not found: #{user_id}"26 end27 28 private29 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 .build36 end37endCustom problems are not included in rankings