|
14 | 14 | from django.core.management.base import BaseCommand |
15 | 15 | from lxml.etree import XMLSyntaxError |
16 | 16 | from restclients_core.exceptions import DataFailureException |
| 17 | +from restclients_core.util.retry import retry |
17 | 18 | from urllib3.exceptions import InsecureRequestWarning |
18 | 19 | from uw_mazevo.api import PublicConfiguration, PublicEvent |
19 | 20 | from uw_r25.events import get_event_by_id, get_events |
@@ -114,6 +115,10 @@ def add_arguments(self, parser): |
114 | 115 | help="Update R25 Events", |
115 | 116 | ) |
116 | 117 |
|
| 118 | + @retry(DataFailureException, status_codes=[0, 429], logger=logger) |
| 119 | + def get_events(self, **kwargs): |
| 120 | + return get_events(**kwargs) |
| 121 | + |
117 | 122 | def handle(self, *args, **options): |
118 | 123 | start_time = time.time() |
119 | 124 |
|
@@ -206,7 +211,6 @@ def handle(self, *args, **options): |
206 | 211 |
|
207 | 212 | mazevo_events = {} |
208 | 213 | current_num = 0 |
209 | | - r25_event_delay = 0 |
210 | 214 | for booking in bookings: |
211 | 215 | current_num += 1 |
212 | 216 |
|
@@ -250,21 +254,13 @@ def handle(self, *args, **options): |
250 | 254 |
|
251 | 255 | r25_event = None |
252 | 256 | try: |
253 | | - # add a delay between fetches so we don't get rate-limited |
254 | | - time.sleep(r25_event_delay + 1.0) |
255 | | - cur_time = time.time() |
256 | 257 |
|
257 | | - events = get_events( |
| 258 | + events = self.get_events( |
258 | 259 | starts_with="%d_" % booking.id, |
259 | 260 | scope="extended", |
260 | 261 | include="reservations", |
261 | 262 | ) |
262 | 263 |
|
263 | | - fetch_time = time.time() - cur_time |
264 | | - r25_event_delay = max(fetch_time, r25_event_delay) |
265 | | - logger.debug("fetched in {}s, delay now {}s".format( |
266 | | - fetch_time, r25_event_delay + 1.0)) |
267 | | - |
268 | 264 | r25_event = events[0] |
269 | 265 |
|
270 | 266 | if len(events) > 1: |
|
0 commit comments