Handle HTTP429 on nickname API endpoint

Closes #971

(cherry picked from commit a64dda2a2e64d1629f389adcf7ce67d15c3085bd)
This commit is contained in:
Adarnof 2018-02-21 17:50:56 -05:00
parent 1caa4b6baa
commit 0f1535161c
2 changed files with 8 additions and 3 deletions

View File

@ -212,6 +212,7 @@ class DiscordOAuthManager:
return None return None
@staticmethod @staticmethod
@api_backoff
def update_nickname(user_id, nickname): def update_nickname(user_id, nickname):
try: try:
nickname = DiscordOAuthManager._sanitize_name(nickname) nickname = DiscordOAuthManager._sanitize_name(nickname)

View File

@ -97,7 +97,7 @@ class DiscordTasks:
@staticmethod @staticmethod
@app.task(bind=True, name='discord.update_nickname') @app.task(bind=True, name='discord.update_nickname')
def update_nickname(self, pk): def update_nickname(task_self, pk):
user = User.objects.get(pk=pk) user = User.objects.get(pk=pk)
logger.debug("Updating discord nickname for user %s" % user) logger.debug("Updating discord nickname for user %s" % user)
if DiscordTasks.has_account(user): if DiscordTasks.has_account(user):
@ -105,10 +105,14 @@ class DiscordTasks:
logger.debug("Updating user %s discord nickname to %s" % (user, character.character_name)) logger.debug("Updating user %s discord nickname to %s" % (user, character.character_name))
try: try:
DiscordOAuthManager.update_nickname(user.discord.uid, character.character_name) DiscordOAuthManager.update_nickname(user.discord.uid, character.character_name)
except DiscordApiBackoff as bo:
logger.info("Discord nickname update API back off for %s, "
"retrying in %s seconds" % (user, bo.retry_after_seconds))
raise task_self.retry(countdown=bo.retry_after_seconds)
except Exception as e: except Exception as e:
if self: if task_self:
logger.exception("Discord nickname sync failed for %s, retrying in 10 mins" % user) logger.exception("Discord nickname sync failed for %s, retrying in 10 mins" % user)
raise self.retry(countdown=60 * 10) raise task_self.retry(countdown=60 * 10)
else: else:
# Rethrow # Rethrow
raise e raise e