【问题标题】:Using Memcache in Django/Python 3,4 with Heroku在 Django/Python 3,4 中使用 Memcache 和 Heroku
【发布时间】:2016-01-18 14:45:30
【问题描述】:

我一直在关注this tutorial,以便可以在 Heroku 上的应用程序中使用 Memcache。但是,我在 Heroku 的 shell 中使用 cache.get() 时遇到了问题(它在我这边工作正常):

File "/app/.heroku/python/lib/python3.4/site-packages/django_pylibmc/memcached.py", line 92
    except MemcachedError, e:
                     ^
SyntaxError: invalid syntax

我看到了this question,他和我有同样的问题。我的settings.py 看起来像这样:

def get_cache():
  import os
  try:
    os.environ['MEMCACHE_SERVERS'] = os.environ['MEMCACHIER_SERVERS'].replace(',', ';')
    os.environ['MEMCACHE_USERNAME'] = os.environ['MEMCACHIER_USERNAME']
    os.environ['MEMCACHE_PASSWORD'] = os.environ['MEMCACHIER_PASSWORD']
    return {
      'default': {
        'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
        'TIMEOUT': 500,
        'BINARY': True,
        'OPTIONS': { 'tcp_nodelay': True }
      }
}
  except:
    return {
      'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
      }
}

所以我用django.core.cache.backends.memcached.PyLibMCCache 替换了django_pylibmc.memcached.PyLibMCCache。然而,当我再次尝试cache.get("foo") 时,我得到了一个不同的错误:

File "/app/.heroku/python/lib/python3.4/site-packages/django/core/cache/backends/memcached.py", line 84, in get

val = self._cache.get(key)

_pylibmc.ConnectionError: error 3 from memcached_get(:1:foo): (0x1c4ed40) CONNECTION FAILURE,  host: localhost:11211 -> libmemcached/get.cc:314

有人可以帮我吗?我需要更改某些设置吗?

【问题讨论】:

    标签: django caching heroku


    【解决方案1】:

    语法 except MemcachedError, e: 适用于 Python 2,但不适用于 Python 3。

    把它改成except MemcachedError as e:就可以了。

    【讨论】:

      【解决方案2】:

      我决定改用 Django 的数据库缓存。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-19
        • 2011-04-18
        • 1970-01-01
        • 2013-08-11
        • 2019-08-05
        • 1970-01-01
        相关资源
        最近更新 更多