From 496d67c864a884e242d279962f1ad3a8eda00b9c Mon Sep 17 00:00:00 2001 From: Jarmil <jarmil.halamicek@seznam.cz> Date: Wed, 14 Oct 2020 15:06:33 +0200 Subject: [PATCH] Cache na API requesty --- .isort.cfg | 2 +- requirements/base.in | 1 + shared/models.py | 14 ++++++++------ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.isort.cfg b/.isort.cfg index 7fe5b8ee..b098b433 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -4,4 +4,4 @@ line_length = 88 multi_line_output = 3 default_sectiont = "THIRDPARTY" include_trailing_comma = true -known_third_party = arrow,django,environ,faker,ics,markdown,modelcluster,nbconvert,pirates,pytest,pytz,requests,sentry_sdk,snapshottest,taggit,traitlets,wagtail,wagtailmetadata +known_third_party = arrow,django,environ,faker,ics,markdown,modelcluster,nbconvert,pirates,pytest,pytz,requests,requests_cache,sentry_sdk,snapshottest,taggit,traitlets,wagtail,wagtailmetadata diff --git a/requirements/base.in b/requirements/base.in index 03f31a2c..1ab8f044 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -9,6 +9,7 @@ pirates<=0.4 whitenoise opencv-python requests +requests-cache ics arrow sentry-sdk diff --git a/shared/models.py b/shared/models.py index fcb488ee..d0565053 100644 --- a/shared/models.py +++ b/shared/models.py @@ -1,4 +1,5 @@ import requests +import requests_cache from django.db import models from modelcluster.contrib.taggit import ClusterTaggableManager from modelcluster.fields import ParentalKey @@ -8,6 +9,11 @@ from wagtail.core.models import Page from wagtail.images.edit_handlers import ImageChooserPanel from wagtailmetadata.models import MetadataPageMixin +# cacheovani requestu na piratska api, ttl 1 hodina +requests_cache.install_cache( + cache_name="shared_models", backend="memory", expire_after=3600 +) + class SharedSubpageMixin: """Must be used in class definition before MetadataPageMixin!""" @@ -76,17 +82,13 @@ class PersonPage(SharedSubpageMixin, MetadataPageMixin, Page): ] def _iapi(self): - """ Vrati data o osobe z piratskeho IAPI jako json - TODO: neni cacheovano - """ + """ Vrati data o osobe z piratskeho IAPI jako json. Cached via requests_cache """ return requests.get( "https://iapi.pirati.cz/v1/user?username=%s" % self.pirate_id ).json() def _graph(self): - """ Vrati data o osobe z graph.pirati.cz (forum) jako json - TODO: neni cacheovano - """ + """ Vrati data o osobe z graph.pirati.cz (forum) jako json. Cached via requests_cache """ return requests.get("https://graph.pirati.cz/user/%s" % self.pirate_id).json() @property -- GitLab