Skip to content

Commit a3c2555

Browse files
authored
Merge pull request #634 from CodeForPhilly/limit_event_lookback
Only collect animal events for last X (5) years
2 parents 4a34a08 + 5126cd4 commit a3c2555

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

src/server/api/API_ingest/sl_animal_events.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
MAX_COUNT = 100 # Max records the API will return for one call
2929
MAX_RETRY = 10
3030

31+
MAX_LOOKBACK_YEARS = 5 # We'll request event records newer than this
32+
OFFSET_SECONDS = MAX_LOOKBACK_YEARS * 365 * 86400
33+
34+
3135
# Get the API key
3236
try:
3337
from secrets_dict import SHELTERLUV_SECRET_TOKEN
@@ -43,7 +47,7 @@
4347
logger.error("Couldn't get SHELTERLUV_SECRET_TOKEN from file or environment")
4448

4549

46-
TEST_MODE=os.getenv("TEST_MODE") # if not present, has value None
50+
TEST_MODE = os.getenv("TEST_MODE") # if not present, has value None
4751

4852
headers = {"Accept": "application/json", "X-API-Key": SHELTERLUV_SECRET_TOKEN}
4953

@@ -75,9 +79,11 @@
7579
# }
7680

7781

78-
def get_event_count():
82+
def get_event_count(query_from):
7983
"""Test that server is operational and get total event count."""
80-
events = "v1/events?offset=0&limit=1"
84+
85+
logger.debug("Querying for events from last %d years, since %d", MAX_LOOKBACK_YEARS, query_from)
86+
events = "v1/events?offset=0&limit=1&since=" + str(query_from)
8187
URL = path.join(BASE_URL, events)
8288
logger.info("making call: %s", URL)
8389

@@ -104,7 +110,7 @@ def get_event_count():
104110
return -5 # AFAICT, this means URL was bad
105111

106112

107-
def get_events_bulk():
113+
def get_events_bulk(query_from):
108114
"""Pull all event records from SL """
109115

110116
# Interesting API design - event record 0 is the newest. But since we pull all records each time it doesn't
@@ -114,7 +120,7 @@ def get_events_bulk():
114120

115121
event_records = []
116122

117-
raw_url = path.join(BASE_URL, "v1/events?offset={0}&limit={1}")
123+
raw_url = path.join(BASE_URL, "v1/events?offset={0}&limit={1}&since={2}")
118124
offset = 0
119125
limit = MAX_COUNT
120126
more_records = True
@@ -124,12 +130,12 @@ def get_events_bulk():
124130

125131
if retries > MAX_RETRY:
126132
raise Exception("get_events_bulk failed, max retries reached")
127-
url = raw_url.format(offset, limit)
133+
url = raw_url.format(offset, limit, query_from)
128134

129135
try:
130136
response = requests.request("GET", url, headers=headers)
131137
except Exception as e:
132-
logger.error("get_events_buk failed with %s, retrying...", e)
138+
logger.error("get_events_bulk failed with %s, retrying...", e)
133139
retries += 1
134140
continue
135141

@@ -165,10 +171,12 @@ def get_events_bulk():
165171

166172

167173
def slae_test():
168-
total_count = get_event_count()
174+
175+
query_from = int(time.mktime(time.localtime()) - OFFSET_SECONDS)
176+
total_count = get_event_count(query_from)
169177
logger.debug("Total events: %d", total_count)
170178

171-
b = get_events_bulk()
179+
b = get_events_bulk(query_from)
172180
logger.debug("Stored records: %d", len(b))
173181

174182
# f = filter_events(b)
@@ -177,11 +185,15 @@ def slae_test():
177185
count = shelterluv_db.insert_events(b)
178186
return count
179187

188+
180189
def store_all_animals_and_events():
181-
total_count = get_event_count()
190+
191+
query_from = int(time.mktime(time.localtime()) - OFFSET_SECONDS)
192+
193+
total_count = get_event_count(query_from)
182194
logger.debug("Total events: %d", total_count)
183195

184-
b = get_events_bulk()
196+
b = get_events_bulk(query_from)
185197
logger.debug("Stored records: %d", len(b))
186198

187199
# f = filter_events(b)

0 commit comments

Comments
 (0)