Optimize list_xxx request speed

This commit is contained in:
Maël Kervella 2018-05-25 09:38:34 +00:00
parent 8432eafdca
commit 0f796bbcea

View file

@ -71,8 +71,12 @@ class Re2oAPIClient:
return url return url
def __getattr__(self, item): def __getattr__(self, item):
if item.startswith('list_'): if item.startswith('list_'):
def f(max_results=None, params={}, **kwargs): def f(max_results=None, params={}, **kwargs):
if not 'page_size' in params.keys():
params['page_size'] = 'all'
response = self.get( response = self.get(
self.get_url_for('%s-list' % item[len('list_'):], **kwargs), self.get_url_for('%s-list' % item[len('list_'):], **kwargs),
params=params params=params
@ -84,20 +88,26 @@ class Re2oAPIClient:
results += response['results'] results += response['results']
return results[:max_results] if max_results else results return results[:max_results] if max_results else results
return f return f
elif item.startswith('count_'): elif item.startswith('count_'):
def f(params={}, **kwargs): def f(params={}, **kwargs):
params.update({'page_size': 1}) if not 'page_size' in params.keys():
params['page_size'] = 1
return self.get( return self.get(
self.get_url_for('%s-list' % item[len('count_'):], **kwargs), self.get_url_for('%s-list' % item[len('count_'):], **kwargs),
params=params params=params
)['count'] )['count']
return f return f
elif item.startswith('view_'): elif item.startswith('view_'):
def f(params={}, **kwargs): def f(params={}, **kwargs):
return self.get( return self.get(
self.get_url_for('%s-details' % item[len('view_'):], **kwargs), self.get_url_for('%s-details' % item[len('view_'):], **kwargs),
params=params params=params
) )
return f return f
else: else:
raise AttributeError(item) raise AttributeError(item)