Кэш мензурки жалуется - PullRequest
       15

Кэш мензурки жалуется

0 голосов
/ 19 февраля 2011

В кеше Beaker выдается ошибка TypeError.Я искал в Google, даже отслеживал проблемы с мензуркой, но ничего не смог найти.

Я кеширую запросы следующим образом

@staticmethod
def get_queries(query):
    @cache.cache(query, type = 'file', expire = 300)
    def load(query):
        entries = db.get_expensive_query(query)
        return entries
    return load(query)

Однако, когда я запускаю программу,это то, что я получаю;

  File "/Users/ivan/project/controller/caching.py", line 15, in get_queries
      return load(query)
  File "/Library/Python/2.6/site-packages/Beaker-1.5.4-py2.6.egg/beaker/cache.py", line 417, in cached
    return cache[0].get_value(cache_key, createfunc=go)
  File "/Library/Python/2.6/site-packages/Beaker-1.5.4-py2.6.egg/beaker/cache.py", line 214, in get
    return self._get_value(key, **kw).get_value()
  File "/Library/Python/2.6/site-packages/Beaker-1.5.4-py2.6.egg/beaker/container.py", line 256, in get_value
    if not self._is_expired(stored, expired):
  File "/Library/Python/2.6/site-packages/Beaker-1.5.4-py2.6.egg/beaker/container.py", line 245, in _is_expired
    time.time() >= expiretime + storedtime
TypeError: cannot concatenate 'str' and 'float' objects

Я делаю что-то не так или это ошибка мензурки?

1 Ответ

0 голосов
/ 19 февраля 2011

Ваш код вызывает cache.cache с целым числом для истечения срока действия, что является правильным, но ясно, что время истечения срока действия или сохраненное время заканчиваются строкой.[Из сообщения об ошибке должно быть время истечения.--ed] Итак, вот что, я думаю, произошло:

(1) Вы вызвали cache.cache со строкой expire в какой-то момент.[Возможно, даже из стандартного cache.expire в опциях CacheManager, не уверен.]

(2) Вы исправили ошибку, создав код, который вы отправили (что работает для меня).(3) Вы перезапускаете код , не удаляя каталог кеша , и поэтому каким-то образом он восстановил предыдущее состояние.

Я могу воспроизвести вашу ошибку, следуя приведенному выше предписанию.Не могли бы вы удалить кэш (все в cache.data_dir и cache.lock_dir) и попробовать еще раз?

...