Skip to content

Commit 9d3875f

Browse files
committed
Merge branch 'hotfix/2.6.3'
2 parents 82b16be + 6a33c41 commit 9d3875f

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

project/settings.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,9 @@
322322
ELASTICSEARCH_TIMEOUT = int(os.environ.get('ELASTICSEARCH_TIMEOUT', '45'))
323323
ELASTICSEARCH_INDEX_VERSIONS = tuple(v for v in os.environ.get('ELASTICSEARCH_INDEX_VERSIONS', '').split(',') if v)
324324

325+
# Seconds, not an actual celery settings
326+
CELERY_RETRY_BACKOFF_BASE = int(os.environ.get('CELERY_RETRY_BACKOFF_BASE', 2 if DEBUG else 10))
327+
325328
# Celery Settings
326329

327330
BROKER_URL = os.environ.get('BROKER_URL', 'amqp://'),

share/tasks.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import abc
2-
import random
32
import datetime
43
import functools
54
import logging
5+
import random
66
import threading
77

88
import pendulum
@@ -309,12 +309,18 @@ def do_run(self, start=None, end=None, limit=None, force=False, superfluous=Fals
309309
# if not created and log.task_id != self.task_id and log.date_modified - datetime.datetime.utcnow() > datetime.timedelta(minutes=10):
310310
# pass
311311
log.reschedule()
312+
# Use random to add jitter to help break up locking issues
312313
# Kinda hacky, allow a stupidly large number of retries as there is no options for infinite
313-
raise self.retry(countdown=random.randrange(10, 30), exc=e, max_retries=99999)
314+
raise self.retry(
315+
exc=e,
316+
max_retries=99999,
317+
countdown=min((random.random() + 1) * (settings.CELERY_RETRY_BACKOFF_BASE ** self.request.retries), 60 * 15)
318+
)
314319
except Exception as e:
315320
log.fail(e)
316321
logger.exception('Failed harvester task (%r, %s, %s)', self.config, start, end)
317-
raise self.retry(countdown=10, exc=e)
322+
# No log needed here, max retries is 3
323+
raise self.retry(countdown=min(settings.CELERY_RETRY_BACKOFF_BASE ** self.request.retries, 60 * 15), exc=e)
318324

319325
if force and error:
320326
log.forced(error)

0 commit comments

Comments
 (0)