Переменная Django Memcache устанавливается при запуске сервера, а не в представлении, содержащем объявление - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь использовать Memcache на Django и Heroku. Я выполнил шаги в devokter Heroku для настройки Memcache с помощью Django (https://devcenter.heroku.com/articles/django-memcache).. Я только хочу сделать очень простой .set (), чтобы добавить переменную в кеш. Я установил переменную кеша в представлениии у меня есть оператор print только для проверки его работоспособности, и я думаю, что ДОЛЖНО произойти, когда это представление вызывается, переменная кэша установлена. Однако я вижу, что когда я запускаю свой сервер разработки, переменная устанавливается при запуске,вместо того, когда вызывается представление.

Вот настройки кеша в настройках:

def get_cache():
    try:
        servers = os.environ['MEMCACHIER_SERVERS']
        username = os.environ['MEMCACHIER_USERNAME']
        password = os.environ['MEMCACHIER_PASSWORD']
        return {
          'default': {
            'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
            # TIMEOUT is not the connection timeout! It's the default expiration timeout that should be applied to keys! Setting it to `None` disables expiration.
            'TIMEOUT': None,
            'LOCATION': servers,
            'OPTIONS': {
              'binary': True,
              'username': username,
              'password': password,
              'behaviors': {
                # Enable faster IO
                'no_block': True,
                'tcp_nodelay': True,
                # Keep connection alive
                'tcp_keepalive': True,
                # Timeout settings
                'connect_timeout': 2000, # ms
                'send_timeout': 750 * 1000, # us
                'receive_timeout': 750 * 1000, # us
                '_poll_timeout': 2000, # ms
                # Better failover
                'ketama': True,
                'remove_failed': 1,
                'retry_timeout': 2,
                'dead_timeout': 30,
              }
            }
          }
        }
    except:
        return {
          'default': {
            'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
          }
        }

CACHES = get_cache()

и вызов, который устанавливает переменную кеша:

from django.core.cache import cache
.
.
class PasswordResetView(auth_views.PasswordResetView):
    cache.set('from_admin', False)
    print(cache.get('from_admin'))

ЕстьЯ где-то ошибся в настройке? Так должен работать Memcache на Django?

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