# Class for thread-safe SITE_ID object from threading import local class SiteID(object): def __init__(self): self._site_thread_info = local() self._site_thread_info.SITE_ID = 1 def __int__(self): return self._site_thread_info.SITE_ID def __hash__(self): return self._site_thread_info.SITE_ID def __str__(self): return str(self._site_thread_info.SITE_ID) def _set(self, new_id): self._site_thread_info.SITE_ID = new_id # Middleware from django.conf import settings from sitiosweb.models import DomainDNS class SetDynamicSites(object): """ Change SITE_ID dinamics with trhead safe """ def process_request(self, request): try: current_site = DomainDNS.objects.get(domain=request.get_host()).website settings.SITE_ID._set(int(current_site.id)) except: settings.SITE_ID._set(1) return None # Settings from sitiosweb.site_id_local import SiteID MIDDLEWARE_CLASSES = ( 'sitiosweb.middleware.DynamicSites.SetDynamicSites', ... ) SITE_ID = SiteID()