Question

Le cache de bécher se plaint à TypeError.J'ai cherché sur Google, même suivi de l'émission de bécher le suivi, mais je n'ai rien trouvé.

i cache les requêtes comme la méthode suivante

@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)

Cependant, lorsque j'exécute le programme, c'est ce que je reçois;

  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

Est-ce que je fais quelque chose de mal ou est-ce qu'un bug de bécher?

Était-ce utile?

La solution

Your code calls cache.cache with an integer for expire, which is correct, but clearly either expiretime or storedtime is winding up with a string. [From the error message it has to be expiretime. --ed] So here's what I think happened:

(1) You called cache.cache with a string expire at some point. [Maybe even from the default cache.expire in the CacheManager opts, not sure.]

(2) You fixed the bug, producing the code you submitted (which works for me).

(3) You reran the code without deleting the cache directory, and so somehow it picked up the previous state.

I can reproduce your error by following the above prescription. Could you delete your cache (everything in cache.data_dir and cache.lock_dir) and try again?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top