Commit c609b792 authored by Jannis Leidel's avatar Jannis Leidel
Browse files

Fixed #17286 -- Made sure all cache backends are set up to connect to the...

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
parent 75c60e80
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -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 = get_cache(DEFAULT_CACHE_ALIAS)

    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)
+7 −0
Original line number Diff line number Diff line
@@ -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."""