2

開発マシンで Johnny Cache をセットアップしようとしていますが、いくつかの問題が発生しています。次のようにファイル ベースのキャッシュを使用します。

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

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

私は得る:

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

メモリベースのものを使用しようとすると:

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

接続はそこでハングアップします。現在、ゼロキャッシングをオンにしています。これを設定する方法はありますか?

4

1 に答える 1

1

JohnnyCache ファイルベースのバックエンドにバグが見つかりました。同じバグがありますが、FileBased バックエンドを動作させることができました。このコードを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

ただし、バグを報告する必要があります。

注: 箱から出してすぐに動作し、非常に高速な memcached バックエンドをお勧めします!

ミドルウェアが 2 つしかない理由がわかりません。あなたは次のようなものを持っているべきではありません:

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',
]
于 2012-02-29T07:41:12.227 に答える