File: interrupt_handler.rb

package info (click to toggle)
ruby-sidekiq 7.3.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 956 kB
  • sloc: ruby: 6,094; javascript: 526; makefile: 21; sh: 20
file content (24 lines) | stat: -rw-r--r-- 505 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# frozen_string_literal: true

module Sidekiq
  module Job
    class InterruptHandler
      include Sidekiq::ServerMiddleware

      def call(instance, hash, queue)
        yield
      rescue Interrupted
        logger.debug "Interrupted, re-queueing..."
        c = Sidekiq::Client.new
        c.push(hash)
        raise Sidekiq::JobRetry::Skip
      end
    end
  end
end

Sidekiq.configure_server do |config|
  config.server_middleware do |chain|
    chain.add Sidekiq::Job::InterruptHandler
  end
end