mirror of
https://github.com/django/django.git
synced 2024-12-01 15:42:04 +01:00
Fixed #17286 -- Made sure all cache backends are set up to connect to the signal handler that closes the cache connection when the request has been processed. Thanks, gnosek.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17479 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
75c60e8053
commit
c609b792f7
13
django/core/cache/__init__.py
vendored
13
django/core/cache/__init__.py
vendored
@ -176,12 +176,13 @@ def get_cache(backend, **kwargs):
|
||||
except (AttributeError, ImportError), e:
|
||||
raise InvalidCacheBackendError(
|
||||
"Could not find backend '%s': %s" % (backend, e))
|
||||
return backend_cls(location, params)
|
||||
cache = backend_cls(location, params)
|
||||
# Some caches -- python-memcached in particular -- need to do a cleanup at the
|
||||
# end of a request cycle. If the cache provides a close() method, wire it up
|
||||
# here.
|
||||
if hasattr(cache, 'close'):
|
||||
signals.request_finished.connect(cache.close)
|
||||
return cache
|
||||
|
||||
cache = get_cache(DEFAULT_CACHE_ALIAS)
|
||||
|
||||
# Some caches -- python-memcached in particular -- need to do a cleanup at the
|
||||
# end of a request cycle. If the cache provides a close() method, wire it up
|
||||
# here.
|
||||
if hasattr(cache, 'close'):
|
||||
signals.request_finished.connect(cache.close)
|
||||
|
7
tests/regressiontests/cache/tests.py
vendored
7
tests/regressiontests/cache/tests.py
vendored
@ -1040,6 +1040,13 @@ class GetCacheTests(unittest.TestCase):
|
||||
|
||||
self.assertRaises(InvalidCacheBackendError, get_cache, 'does_not_exist')
|
||||
|
||||
def test_close(self):
|
||||
from django.core import signals
|
||||
cache = get_cache('regressiontests.cache.closeable_cache.CacheClass')
|
||||
self.assertFalse(cache.closed)
|
||||
signals.request_finished.send(self.__class__)
|
||||
self.assertTrue(cache.closed)
|
||||
|
||||
|
||||
class CacheUtils(TestCase):
|
||||
"""TestCase for django.utils.cache functions."""
|
||||
|
Loading…
Reference in New Issue
Block a user