在Herang中使用Django / Python 3,4中的Memcache

时间:2015-10-20 04:48:55

标签: django caching heroku

我一直关注this tutorial,以便我可以在Heroku上的应用程序上使用Memcache。但是我在Heroku的shell中使用public static void toggleComplete() { System.out.print("Enter index of item to toggle complete: "); int toggle = k.nextInt(); toDoItems.get(toggle).setToggle(!toDoItems.get(toggle).isToggled()); // No need for a for-loop since `ArrayList` has the `get` method to do this for you //for (int index = 0; index < toDoItems.size(); index++) { // if(toggle == index) { // System.out.println(index + ". [X] " + toDoItems.get(index)); // } // else { // System.out.println(index + ". [ ] " + toDoItems.get(index)); // } //} } 时遇到了问题(我的工作正常):

cache.get()

我看到了this question,他和我有同样的问题。我的File "/app/.heroku/python/lib/python3.4/site-packages/django_pylibmc/memcached.py", line 92 except MemcachedError, e: ^ SyntaxError: invalid syntax 看起来像这样:

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_pylibmc.memcached.PyLibMCCache。然而,当我再次尝试django.core.cache.backends.memcached.PyLibMCCache时出现了不同的错误:

cache.get("foo")

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

2 个答案:

答案 0 :(得分:0)

我决定转而使用Django的数据库缓存。

答案 1 :(得分:0)

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

将其更改为except MemcachedError as e:,您应该没问题。