Настройка Memcached для кэширования сеансов Django в App Engine

при настройке Django для использования Memcached для кеширования (в моем случае я хочу использовать кеширование сеанса), в settings.py мы установили

 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } } 

Я буду запускать проект в App Engine, поэтому мой вопрос заключается в том, что я делаю для записи LOCATION ?

3 Solutions collect form web for “Настройка Memcached для кэширования сеансов Django в App Engine”

Как это происходит, я переносил приложение Django (1.6.5) в GAE за последние несколько дней (GAE Development SDK 1.9.6). У меня сейчас нет большой потребности в кешировании, но хорошо знать, что она доступна, если мне это нужно.

Поэтому я просто попытался использовать django.core.cache.backends.memcached.MemcachedCache качестве моего бэкэнда для кэша (настроен так, как вы описываете в своем вопросе, и я помещаю python-memcached в папку libs) и

 SESSION_ENGINE = 'django.contrib.sessions.backends.cache' 

для управления моими сеансами и GAE дал мне ошибку:

 RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable. 

Так или иначе…

… даже если вы можете заставить это работать, конечно, лучше использовать API API от Google и заимствовать его из реализации Django Memcached, тем более, что библиотека Google была разработана для совместимости с python-memcached, и в противном случае ваше приложение может сломаться на любом с обновлением SDK. Создайте модуль python, такой как my_project/backends.py :

 import pickle from django.core.cache.backends.memcached import BaseMemcachedCache class GaeMemcachedCache(BaseMemcachedCache): "An implementation of a cache binding using google's app engine memcache lib (compatible with python-memcached)" def __init__(self, server, params): from google.appengine.api import memcache super(GaeMemcachedCache, self).__init__(server, params, library=memcache, value_not_found_exception=ValueError) @property def _cache(self): if getattr(self, '_client', None) is None: self._client = self._lib.Client(self._servers, pickleProtocol=pickle.HIGHEST_PROTOCOL) return self._client 

Затем настройка кеша будет выглядеть следующим образом:

 CACHES = { 'default': { 'BACKEND': 'my_project.backends.GaeMemcachedCache', } } 

Это оно! Кажется, это работает нормально, но я должен быть ясно, что он не проверен строго!

В стороне

Попробуйте в google.appengine.api.memcache.__init__.py в вашей папке SDK SDE, и вы найдете:

  def __init__(self, servers=None, debug=0, pickleProtocol=cPickle.HIGHEST_PROTOCOL, pickler=cPickle.Pickler, unpickler=cPickle.Unpickler, pload=None, pid=None, make_sync_call=None, _app_id=None): """Create a new Client object. No parameters are required. Arguments: servers: Ignored; only for compatibility. ... 

т.е. даже если вы можете найти LOCATION для своего экземпляра memcache в облаке, собственная библиотека Google проигнорирует его.

Место должно быть установлено как ваш ip и порт, где работает ваш демон memcache.

Проверьте это в официальной документации django.

Установите LOCATION в ip: port values, где ip – IP-адрес демон Memcached, а порт – порт, на котором работает Memcached, или значение unix: path, где путь – путь к файлу сокета Memcached Unix.

https://docs.djangoproject.com/en/dev/topics/cache/

Если вы следуете этой документации http://www.allbuttonspressed.com/projects/djangoappengine

И клонирование этого (как указано в приведенной выше ссылке) https://github.com/django-nonrel/djangoappengine/blob/master/djangoappengine/settings_base.py

Я не думаю, что вам нужно определить местоположение . Это ошибка, когда вы ее не определяете?

  • Каков наилучший метод сериализации для объектов в memcached?
  • В Django / python, как установить memcache в бесконечное время?
  • Кэш-представление django с параметрами URL
  • Memcached получает значение null для String, установленного с помощью python, а затем получает от Java
  • Установка объекта в API кэша Django завершается сбоем из-за ошибки сортировки
  • Хорошие примеры использования python-memcache (memcached) в Python?
  • Как установить тайм-аут получения Memcached в Django
  • memcache.get возвращает неверный объект (Celery, Django)
  • Как сказать Django, что memcached работает с размером элемента больше, чем по умолчанию?
  • Как импортировать классы django.middleware в проект Google App Engine?
  • Проблемы с производительностью memcache App Engine / ndb.get_multi
  •  
    Interesting Posts for Van-Lav

    Malformed Packet: вложенная форма администратора Django не может быть отправлена, соединение было сброшено

    NLTK / NLP, выполняющий классификацию предметных разделов с множеством / многими метками

    каковы накладные расходы на передачу функций обратного вызова python для подпрограмм Fortran?

    Неисправность установки надзора с сельдереем

    Что означает (многоточие) в списке в Python?

    Вложение Python в C, ссылка не выполняется с неопределенной ссылкой на `Py_Initialize '

    Самая длинная повторяемая (k раз) подстрока

    Невозможно найти информацию о методе read () Python (python 2.7)

    Как проверить соответствие словаря с пакетом doctest-пакета Python?

    Matplotlib соединяет точки рассеивания с линией – Python

    В Python 2, каковы компромиссы производительности для viewvalues ​​() / viewitems () над itervalues ​​() / iteritems ()?

    OutOfMemoryError при использовании PySpark для чтения файлов в локальном режиме

    Решение Pythonic для удаления значений N из итератора

    pythonw.exe или python.exe?

    Серийный анализатор Django для одного объекта

    Python - лучший язык программирования в мире.