2

I'm trying to set up Johnny Cache on my dev machine but am running into some issues. Using the file based cache like this:

CACHES = {
    'default' : dict(
        BACKEND= 'johnny.backends.filebased.FileBasedCache',
        LOCATION= '/tmp',
    )
}

MIDDLEWARE_CLASSES = (
    'johnny.middleware.LocalStoreClearMiddleware',
    'johnny.middleware.QueryCacheMiddleware',
)

I get:

Traceback (most recent call last):
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 283, in run
    self.result = application(self.environ, self.start_response)
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 68, in __call__
    return self.application(environ, start_response)
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 273, in __call__
    response = self.get_response(request)
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/django/core/handlers/base.py", line 168, in get_response
    receivers = signals.got_request_exception.send(sender=self.__class__, request=request)
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 172, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/django/db/transaction.py", line 222, in inner
    self.__exit__(None, None, None)
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/django/db/transaction.py", line 207, in __exit__
    self.exiting(exc_value, self.using)
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/django/db/transaction.py", line 281, in exiting
    commit(using=using)
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/johnny/transaction.py", line 147, in newfun
    self._flush(commit=commit, using=using)
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/johnny/transaction.py", line 135, in _flush
    self.cache_backend.set(key, value, self.timeout)
  File "/Users/kitsunde/.virtualenvs/media-pop/lib/python2.7/site-packages/johnny/backends/filebased.py", line 23, in set
    return super(CacheClass, self).set(key, value, timeout=timeout, **kwargs)
NameError: global name 'kwargs' is not defined

If I try to use the memory based one:

CACHES = {
    'default' : {
        'BACKEND': 'johnny.backends.locmem.LocMemCache',
    }
}

The connection just hangs there. I have zero caching turned on now. Any idea how I can set this up?

Kit Sunde
  • 35,972
  • 25
  • 125
  • 179
  • You found a bug in JohnnyCache filebased backend. Note that I have the same version and Memcached backend does work so you might rather use that. – jpic Feb 29 '12 at 07:36

1 Answers1

1

You found a bug in the JohnnyCache filebased backend. I have the same bug, however I managed to get the FileBased backend to work. I fixed the bug by putting this code in settings.py:

import sys
from johnny.backends import filebased
def fixed_set(self, key, value, timeout=None):
    if timeout is 0:
        timeout = sys.maxint
    return super(filebased.CacheClass, self).set(key, value, timeout=timeout)
filebased.CacheClass.set = fixed_set

You should however, report the bug.

Note: I recommend the memcached backend which works out of the box and is super blazing fast!

I don't understand why you have only two middlewares. Shouldn't you have something like:

MIDDLEWARE_CLASSES = [
    'johnny.middleware.LocalStoreClearMiddleware',
    'johnny.middleware.QueryCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
]
Murph
  • 511
  • 7
  • 16
jpic
  • 32,891
  • 5
  • 112
  • 113