No Django / python, como configuro o memcache para o tempo infinito?

cache.set(key, value, 9999999) 

Mas isso não é tempo infinito …

 def _get_memcache_timeout(self, timeout): """ Memcached deals with long (> 30 days) timeouts in a special way. Call this function to obtain a safe value for your timeout. """ timeout = timeout or self.default_timeout if timeout > 2592000: # 60*60*24*30, 30 days # See http://code.google.com/p/memcached/wiki/FAQ # "You can set expire times up to 30 days in the future. After that # memcached interprets it as a date, and will expire the item after # said date. This is a simple (but obscure) mechanic." # # This means that we have to switch to absolute timestamps. timeout += int(time.time()) return timeout 

E do FAQ :

Quais são os limites para definir o tempo de expiração? (por que há um limite de 30 dias?)

Você pode definir tempos de expiração de até 30 dias no futuro. Depois que o memcached o interpreta como uma data e expira o item após a data mencionada. Esta é uma mecânica simples (mas obscura).

Dos docs :

Os tempos de expiração podem ser definidos de 0, significando “nunca expirar”, para 30 dias. Qualquer hora superior a 30 dias é interpretada como uma data de registro de data e hora unix

Portanto, para definir uma chave para nunca expirar, defina o tempo limite como 0.

Suporte para cache não expirado foi adicionado no Django 1.6 definindo timeout=None

Outra técnica simples é gravar o HTML gerado em um arquivo no disco e usá-lo como seu cache. Não é difícil de implementar, e funciona muito bem como um cache baseado em arquivos que NUNCA expira, é bastante transparente, etc.

Não é o jeito do Django, mas funciona bem.