Limit total subscribe retries to 10, but space them out more (#4142)

Since there is little point in retrying so often when a service is down
or does not exist anymore. Subscriptions are renewed 1 day before they
should expire, so retrying in 30 minutes, then 2 hours, then 12 hours
is fine. If even after that, the remote server does not work, there is
little sense in retrying more often than once a day

Also, uniqueness of the job should ensure that failed retries will
not result in multiple retries for the same endpoint when the next
resubscription cycle comes
This commit is contained in:
Eugen Rochko 2017-07-10 18:04:23 +02:00 committed by GitHub
parent 7f9a353b94
commit 34ccc058fa
1 changed files with 14 additions and 1 deletions

View File

@ -3,7 +3,20 @@
class Pubsubhubbub::SubscribeWorker class Pubsubhubbub::SubscribeWorker
include Sidekiq::Worker include Sidekiq::Worker
sidekiq_options queue: 'push' sidekiq_options queue: 'push', retry: 10, unique: :until_executed
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
def perform(account_id) def perform(account_id)
account = Account.find(account_id) account = Account.find(account_id)