Added a production-mode check to verify that the cache is functioning as expected.
- Legacy-Id: 11471
This commit is contained in:
parent
19fb344082
commit
75fd4d2876
|
@ -1,4 +1,5 @@
|
||||||
import os
|
import os
|
||||||
|
import time
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core import checks
|
from django.core import checks
|
||||||
|
@ -52,14 +53,14 @@ def check_doc_email_aliases_exists(app_configs, **kwargs):
|
||||||
try:
|
try:
|
||||||
ok = check_doc_email_aliases()
|
ok = check_doc_email_aliases()
|
||||||
if not ok:
|
if not ok:
|
||||||
errors.append(checks.Critical(
|
errors.append(checks.Error(
|
||||||
"Found no aliases in the document email aliases file\n'%s'."%settings.DRAFT_ALIASES_PATH,
|
"Found no aliases in the document email aliases file\n'%s'."%settings.DRAFT_ALIASES_PATH,
|
||||||
hint="Please run ietf/bin/generate-draft-aliases to generate them.",
|
hint="Please run ietf/bin/generate-draft-aliases to generate them.",
|
||||||
obj=None,
|
obj=None,
|
||||||
id="datatracker.E0004",
|
id="datatracker.E0004",
|
||||||
))
|
))
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
errors.append(checks.Critical(
|
errors.append(checks.Error(
|
||||||
"Could not read document email aliases:\n %s" % e,
|
"Could not read document email aliases:\n %s" % e,
|
||||||
hint="Please run ietf/bin/generate-draft-aliases to generate them.",
|
hint="Please run ietf/bin/generate-draft-aliases to generate them.",
|
||||||
obj=None,
|
obj=None,
|
||||||
|
@ -176,4 +177,35 @@ def check_proceedings_directories(app_configs, **kwargs):
|
||||||
))
|
))
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
|
@checks.register('cache')
|
||||||
|
def check_cache(app_configs, **kwargs):
|
||||||
|
errors = []
|
||||||
|
if settings.SERVER_MODE == 'production':
|
||||||
|
from django.core.cache import cache
|
||||||
|
def cache_error(msg, errnum):
|
||||||
|
return checks.Warning(
|
||||||
|
( "A cache test failed with the message:\n '%s'.\n"
|
||||||
|
"This indicates that the cache is unavailable or not working as expected.\n"
|
||||||
|
"It will impact performance, but isn't fatal. The default cache is:\n"
|
||||||
|
" CACHES['default']['BACKEND'] = %s\n") % (
|
||||||
|
msg,
|
||||||
|
settings.CACHES["default"]["BACKEND"],
|
||||||
|
),
|
||||||
|
hint = "Please check that the configured cache backend is available.\n",
|
||||||
|
id = "datatracker.%s" % errnum,
|
||||||
|
)
|
||||||
|
key = "ietf:checks:check_cache"
|
||||||
|
val = os.urandom(32)
|
||||||
|
wait = 1
|
||||||
|
cache.set(key, val, wait)
|
||||||
|
if not cache.get(key) == val:
|
||||||
|
errors.append(cache_error("Could not get value from cache", "E0014"))
|
||||||
|
time.sleep(wait+1)
|
||||||
|
# should have timed out
|
||||||
|
if cache.get(key) == val:
|
||||||
|
errors.append(cache_error("Cache value didn't time out", "E0015"))
|
||||||
|
cache.set(key, val, settings.SESSION_COOKIE_AGE)
|
||||||
|
if not cache.get(key) == val:
|
||||||
|
errors.append(cache_error("Cache didn't accept session cookie age", "E0016"))
|
||||||
|
return errors
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue