Skip to content

Commit ae7b2e5

Browse files
committed
replace delay code with retry decorator
1 parent 6906101 commit ae7b2e5

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

mazevo_r25/management/commands/mazevo2r25.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from django.core.management.base import BaseCommand
1515
from lxml.etree import XMLSyntaxError
1616
from restclients_core.exceptions import DataFailureException
17+
from restclients_core.util.retry import retry
1718
from urllib3.exceptions import InsecureRequestWarning
1819
from uw_mazevo.api import PublicConfiguration, PublicEvent
1920
from uw_r25.events import get_event_by_id, get_events
@@ -114,6 +115,10 @@ def add_arguments(self, parser):
114115
help="Update R25 Events",
115116
)
116117

118+
@retry(DataFailureException, status_codes=[0, 429], logger=logger)
119+
def get_events(self, **kwargs):
120+
return get_events(**kwargs)
121+
117122
def handle(self, *args, **options):
118123
start_time = time.time()
119124

@@ -206,7 +211,6 @@ def handle(self, *args, **options):
206211

207212
mazevo_events = {}
208213
current_num = 0
209-
r25_event_delay = 0
210214
for booking in bookings:
211215
current_num += 1
212216

@@ -250,21 +254,13 @@ def handle(self, *args, **options):
250254

251255
r25_event = None
252256
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()
256257

257-
events = get_events(
258+
events = self.get_events(
258259
starts_with="%d_" % booking.id,
259260
scope="extended",
260261
include="reservations",
261262
)
262263

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-
268264
r25_event = events[0]
269265

270266
if len(events) > 1:

0 commit comments

Comments
 (0)