Push cache backend checks down to backend classes
Currently, the three system checks for caches are individual functions in django.core.checks.caches. But two of them relate only to FileBasedCache
, yet still run regardless of which backends are used. This structure causes some issues:
FileBasedCache
and its dependencies are imported even when not used.
- Some waste in
check_cache_location_not_exposed()
when no FileBasedCache
is configured, which resolves some paths before checking against caches.
- The code structure is a bit messy with repeated loops and
isinstance(cache, FileBasedCache)
conditions.
I propose restructuring these checks to live within the cache backend classes in django.core.cache.backends.*
, adopting the same pattern used for model and field checks, admin checks, and staticfiles finders. (And template backend checks, as I proposed in #35233.)
This would mean:
- Adding
BaseCache.check()
which just does return []
for now.
- Pushing the existing two checks down to a new
FileBasedCache.check()
method.
- Dropping the existing code.
- Checking tests cover the checks sufficiently and they pass with the new structure.
- Potentially adding a test to cover a custom cache backend with its own check.
Change History
(8)
Triage Stage: |
Unreviewed → Accepted
|
Owner: |
changed from nobody to Almaz
|
Status: |
new → assigned
|
Has patch: |
set
|
Needs documentation: |
set
|
Needs tests: |
set
|
Patch needs improvement: |
set
|
Owner: |
changed from Almaz to tainarapalmeira
|
Agreed, we recently did the same thing with constraint check (0fb104dda287431f5ab74532e45e8471e22b58c8).