From 6219a3bdd8e6feccf2b5bbdfbe4cbd80daf2c4fa Mon Sep 17 00:00:00 2001 From: Julia Luna Date: Sun, 19 Jun 2022 00:41:56 +0200 Subject: [PATCH] add caching --- scopedsites/middleware.py | 16 ++++++++++++---- setup.py | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/scopedsites/middleware.py b/scopedsites/middleware.py index efb6dd2..69a6ab6 100644 --- a/scopedsites/middleware.py +++ b/scopedsites/middleware.py @@ -9,7 +9,8 @@ class DomainScopeMiddleware: self.get_response = get_response def __call__(self, request): - d = Domain.get_from_request(request) + d = Domain.get_from_request(request) # technically does hit the db layer, but should get caught in memcache + # TODO: performance testing with scope(domain=d): response = self.get_response(request) @@ -20,11 +21,18 @@ class DomainScopeMiddleware: class DomainAutoCreateMiddleware: def __init__(self, get_response): self.get_response = get_response + self.cache = set() + + def ensure_exists(self, r): + if (host := r.META.get("HTTP_HOST")) in self.cache: + return - def __call__(self, request): try: - Domain.get_from_request(request) + Domain.get_from_request(r) + self.cache.add(host) except Http404: - Domain.objects.create(fqdn=request.META.get('HTTP_HOST')) + Domain.objects.create(fqdn=r.META.get('HTTP_HOST')) + def __call__(self, request): + self.ensure_exists(request) return self.get_response(request) diff --git a/setup.py b/setup.py index 1d0a717..47474ea 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from setuptools import setup setup( name="django_scopedsites", packages=["scopedsites", "scopedsites.migrations"], - version="0.1.2", + version="0.1.3", description="django_scopes x django.contrib.sites", python_requires=">=3.6", install_requires=[