|
40 | 40 | APOD_METHOD_NAME = 'apod'
|
41 | 41 | ALLOWED_APOD_FIELDS = ['concept_tags', 'date', 'hd', 'count', 'start_date', 'end_date', 'thumbs']
|
42 | 42 | ALCHEMY_API_KEY = None
|
43 |
| - |
| 43 | +RESULTS_DICT = dict([]) |
44 | 44 | try:
|
45 | 45 | with open('alchemy_api.key', 'r') as f:
|
46 | 46 | ALCHEMY_API_KEY = f.read()
|
@@ -128,21 +128,36 @@ def _get_json_for_date(input_date, use_concept_tags, thumbs):
|
128 | 128 | # fall back to using today's date IF they didn't specify a date
|
129 | 129 | use_default_today_date = True
|
130 | 130 | dt = input_date # None
|
| 131 | + key = datetime.utcnow().date() |
| 132 | + key = str(key.year)+'y'+str(key.month)+'m'+str(key.day)+'d'+str(use_concept_tags)+str(thumbs) |
131 | 133 |
|
132 | 134 | # validate input date
|
133 | 135 | else:
|
| 136 | + |
134 | 137 | dt = datetime.strptime(input_date, '%Y-%m-%d').date()
|
135 | 138 | _validate_date(dt)
|
| 139 | + key = str(dt.year)+'y'+str(dt.month)+'m'+str(dt.day)+'d'+str(use_concept_tags)+str(thumbs) |
136 | 140 |
|
137 | 141 | # get data
|
138 |
| - data = _apod_handler(dt, use_concept_tags, use_default_today_date, thumbs) |
| 142 | + if key in RESULTS_DICT.keys(): |
| 143 | + data = RESULTS_DICT[key] |
| 144 | + else: |
| 145 | + data = _apod_handler(dt, use_concept_tags, use_default_today_date, thumbs) |
| 146 | + |
139 | 147 |
|
140 | 148 | # Handle case where no data is available
|
141 | 149 | if not data:
|
142 | 150 | return _abort(code=404, msg=f"No data available for date: {input_date}", usage=False)
|
| 151 | + |
143 | 152 |
|
144 | 153 | data['service_version'] = SERVICE_VERSION
|
145 | 154 |
|
| 155 | + #Volatile caching dict |
| 156 | + datadate = datetime.strptime(data['date'], '%Y-%m-%d').date() |
| 157 | + key = str(datadate.year)+'y'+str(datadate.month)+'m'+str(datadate.day)+'d'+str(use_concept_tags)+str(thumbs) |
| 158 | + RESULTS_DICT[key] = data |
| 159 | + |
| 160 | + |
146 | 161 | # return info as JSON
|
147 | 162 | return jsonify(data)
|
148 | 163 |
|
|
0 commit comments