0001-postgresql_backend-cache-ContentType-based-on-the-ma.patch
tenant_schemas/postgresql_backend/base.py | ||
---|---|---|
185 | 185 |
# use weak for transient Manager |
186 | 186 |
owner._thread_local_cache._cache = weakref.WeakKeyDictionary() |
187 | 187 |
global_cache = owner._thread_local_cache._cache |
188 |
get_cache = global_cache.get(owner) |
|
188 |
model_cache = global_cache.setdefault(obj, weakref.WeakKeyDictionary()) |
|
189 |
get_cache = model_cache.get(obj.model) |
|
189 | 190 |
if not get_cache: |
190 | 191 |
# use an LRU cache to evict dead tenants with time and to prevent |
191 | 192 |
# bloat with lot of tenants |
192 | 193 |
@lru_cache(maxsize=200) |
193 | 194 |
def get_cache(schema_name): |
194 | 195 |
return {} |
195 |
global_cache[owner] = get_cache
|
|
196 |
global_cache[obj.model] = get_cache
|
|
196 | 197 |
tenant = getattr(connection, 'tenant', None) |
197 | 198 |
schema_name = getattr(tenant, 'schema_name', 'public') |
198 | 199 |
return get_cache(schema_name) |
199 |
- |