|
6 | 6 | from django.conf import settings
|
7 | 7 | from members.models import Member
|
8 | 8 | from requests.sessions import Session
|
| 9 | +from requests.exceptions import RequestException |
| 10 | +import slacker |
9 | 11 |
|
10 | 12 | from .utils import api_configured, get_client
|
11 | 13 |
|
@@ -46,7 +48,11 @@ def sync_members(self, autodeactivate=False, resend=True):
|
46 | 48 | if 'ok' not in resp.body or not resp.body['ok']:
|
47 | 49 | self.logger.error("Could not invite {}, response: {}".format(member.email, resp.body))
|
48 | 50 | time.sleep(0.25) # rate-limit
|
49 |
| - except Exception as e: |
| 51 | + except slacker.Error as e: |
| 52 | + if str(e) == 'sent_recently': |
| 53 | + continue |
| 54 | + raise e |
| 55 | + except RequestException as e: |
50 | 56 | if 'Retry-After' in e.response.headers:
|
51 | 57 | wait_s = int(e.response.headers['Retry-After'])
|
52 | 58 | logger.warning("Asked to wait {}s before retrying invite for {}".format(wait_s, member.email))
|
@@ -78,7 +84,7 @@ def sync_members(self, autodeactivate=False, resend=True):
|
78 | 84 | if 'ok' not in resp.body or not resp.body['ok']:
|
79 | 85 | self.logger.error("Could not deactivate {}, response: {}".format(email, resp.body))
|
80 | 86 | time.sleep(0.25) # rate-limit
|
81 |
| - except Exception as e: |
| 87 | + except RequestException as e: |
82 | 88 | if 'Retry-After' in e.response.headers:
|
83 | 89 | wait_s = int(e.response.headers['Retry-After'])
|
84 | 90 | logger.warning("Asked to wait {}s before retrying deactivation for {}".format(wait_s, email))
|
|
0 commit comments