Projet

Général

Profil

0001-postgresql_backend-cache-ContentType-based-on-the-ma.patch

Benjamin Dauvergne, 12 avril 2019 17:16

Télécharger (1,57 ko)

Voir les différences:

Subject: [PATCH] postgresql_backend: cache ContentType based on the manager
 object and model classes (#32248)

model classes and manager object are duplicated during migrations.
 tenant_schemas/postgresql_backend/base.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
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
-