Skip to content

Commit 6906101

Browse files
committed
add anti rate-limiting delay
1 parent 249efde commit 6906101

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

mazevo_r25/management/commands/mazevo2r25.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import requests
66
import six
77
import sys
8+
import time
89
import unicodedata
910

1011
from dateutil.parser import parse
@@ -114,6 +115,7 @@ def add_arguments(self, parser):
114115
)
115116

116117
def handle(self, *args, **options):
118+
start_time = time.time()
117119

118120
self.set_logger(options.get("verbosity"))
119121

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

205207
mazevo_events = {}
206208
current_num = 0
209+
r25_event_delay = 0
207210
for booking in bookings:
208211
current_num += 1
209212

@@ -247,12 +250,21 @@ def handle(self, *args, **options):
247250

248251
r25_event = None
249252
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+
250257
events = get_events(
251258
starts_with="%d_" % booking.id,
252259
scope="extended",
253260
include="reservations",
254261
)
255262

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+
256268
r25_event = events[0]
257269

258270
if len(events) > 1:
@@ -477,3 +489,5 @@ def handle(self, *args, **options):
477489
except Exception:
478490
print("Email not configured. Mazevo2R25 report:")
479491
print(messages)
492+
493+
logger.debug("time: {}".format(time.time() - start_time))

0 commit comments

Comments
 (0)