В Django / python, как установить memcache на бесконечное время? - PullRequest
9 голосов
/ 27 мая 2010
cache.set(key, value, 9999999)

Но это не бесконечное время ...

Ответы [ 4 ]

12 голосов
/ 27 мая 2010
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

А из FAQ :

Каковы ограничения на время истечения срока годности? (почему существует 30-дневный лимит?)

Вы можете установить время истечения до 30 дней в будущем. После этого memcached интерпретирует его как дату и истечет срок действия элемента после указанной даты. Это простой (но неясный) механик.

10 голосов
/ 03 декабря 2012

С документы :

Время истечения может быть установлено от 0, что означает «никогда не истекает», до 30 дней. Любое время, превышающее 30 дней, интерпретируется как метка времени Unix. дата

Итак, чтобы ключ никогда не истекал, установите время ожидания равным 0.

8 голосов
/ 08 ноября 2013

Поддержка не истекающего кэша была добавлена ​​в Django 1.6 путем установки timeout=None

0 голосов
/ 16 сентября 2010

Другой простой метод - записать сгенерированный HTML-файл в файл на диске и использовать его в качестве кэша.Это не сложно реализовать, и он работает довольно хорошо, поскольку файловый кеш, который НИКОГДА не истекает, довольно прозрачен и т. Д.

Это не способ django, но он работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...