You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
898 B
34 lines
898 B
# frozen_string_literal: true |
|
|
|
class Pubsubhubbub::SubscribeWorker |
|
include Sidekiq::Worker |
|
|
|
sidekiq_options queue: 'push', retry: 10, unique: :until_executed, dead: false |
|
|
|
sidekiq_retry_in do |count| |
|
case count |
|
when 0 |
|
30.minutes.seconds |
|
when 1 |
|
2.hours.seconds |
|
when 2 |
|
12.hours.seconds |
|
else |
|
24.hours.seconds * (count - 2) |
|
end |
|
end |
|
|
|
sidekiq_retries_exhausted do |msg, _e| |
|
account = Account.find(msg['args'].first) |
|
Sidekiq.logger.error "PuSH subscription attempts for #{account.acct} exhausted. Unsubscribing" |
|
::UnsubscribeService.new.call(account) |
|
end |
|
|
|
def perform(account_id) |
|
account = Account.find(account_id) |
|
logger.debug "PuSH re-subscribing to #{account.acct}" |
|
::SubscribeService.new.call(account) |
|
rescue => e |
|
raise e.class, "Subscribe failed for #{account&.acct}: #{e.message}", e.backtrace[0] |
|
end |
|
end
|
|
|