21 lines
758 B
Python
21 lines
758 B
Python
# Copyright The IETF Trust 2023, All Rights Reserved
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from django.core.cache.backends.base import DEFAULT_TIMEOUT
|
|
from django.core.cache.backends.memcached import PyMemcacheCache
|
|
from pymemcache.exceptions import MemcacheServerError
|
|
|
|
from .log import log
|
|
|
|
|
|
class LenientMemcacheCache(PyMemcacheCache):
|
|
"""PyMemcacheCache backend that tolerates failed inserts due to object size"""
|
|
def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
|
|
try:
|
|
super().set(key, value, timeout, version)
|
|
except MemcacheServerError as err:
|
|
if "object too large for cache" in str(err):
|
|
log(f"Memcache failed to cache large object for {key}")
|
|
else:
|
|
raise
|