3
我想爲我的Django網站使用heroku插件'MemCacheCloud'來配置MemCached。當我運行正試圖獲取代碼/設置緩存,然後我收到以下錯誤無法在Heroku上配置MemCached
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py", line 115, in get_response
Mar 31 19:36:17 mycloudapp app/web.1: response = callback(request, *callback_args, **callback_kwargs)
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/.heroku/python/lib/python2.7/site-packages/newrelic-2.12.0.10/newrelic/hooks/framework_django.py", line 492, in wrapper
Mar 31 19:36:17 mycloudapp app/web.1: return wrapped(*args, **kwargs)
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/jobs/views.py", line 53, in job_view
Mar 31 19:36:17 mycloudapp app/web.1: skill_list = get_all_skills()
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/common/dataaccess.py", line 13, in get_all_skills
Mar 31 19:36:17 mycloudapp app/web.1: cache.set(ALL_SKILLS, skill_list)
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/cache/backends/memcached.py", line 71, in set
Mar 31 19:36:17 mycloudapp app/web.1: self._cache.set(key, value, self._get_memcache_timeout(timeout))
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/.heroku/python/lib/python2.7/site-packages/newrelic-2.12.0.10/newrelic/api/memcache_trace.py", line 70, in __call__
Mar 31 19:36:17 mycloudapp app/web.1: return self._nr_next_object(*args, **kwargs)
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/.heroku/python/lib/python2.7/site-packages/bmemcached/client.py", line 126, in set
Mar 31 19:36:17 mycloudapp app/web.1: returns.append(server.set(key, value, time))
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/.heroku/python/lib/python2.7/site-packages/bmemcached/protocol.py", line 372, in set
Mar 31 19:36:17 mycloudapp app/web.1: return self._set_add_replace('set', key, value, time)
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/.heroku/python/lib/python2.7/site-packages/bmemcached/protocol.py", line 345, in _set_add_replace
Mar 31 19:36:17 mycloudapp app/web.1: time, key, value))
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/.heroku/python/lib/python2.7/socket.py", line 224, in meth
Mar 31 19:36:17 mycloudapp app/web.1: return getattr(self._sock,name)(*args)
Mar 31 19:36:17 mycloudapp app/web.1: File "/app/.heroku/python/lib/python2.7/socket.py", line 170, in _dummy
Mar 31 19:36:17 mycloudapp app/web.1: raise error(EBADF, 'Bad file descriptor')
Mar 31 19:36:17 mycloudapp app/web.1: error: [Errno 9] Bad file descriptor
我的代碼來訪問緩存dataaccess.py -
from django.core.cache import cache
ALL_SKILLS = "allskills"
def get_all_skills():
skill_list = cache.get(ALL_SKILLS)
if not skill_list:
skill_list = MySkillTable.objects.all()
cache.set(ALL_SKILLS, skill_list)
return skill_list
我的settings.py有入口
CACHES = {
'default': {
'BACKEND': 'django_bmemcached.memcached.BMemcached',
'LOCATION': get_env_setting('MEMCACHEDCLOUD_SERVERS').split(','),
'OPTIONS': {
'username': get_env_setting('MEMCACHEDCLOUD_USERNAME'),
'password': get_env_setting('MEMCACHEDCLOUD_PASSWORD')
}
}
}
當我在評論dataaccess.py cache.set & cache.get線,代碼完美的作品。
獲取相同的東西。你找到解決方法嗎? – johnboiles
@johnboiles - 我通過電子郵件發送了同樣的支持,得到了回覆,看到我的堆棧跟蹤後,他們在'bmemcached'中發現了一些錯誤。他們修復了錯誤並將修補程序提交給了'bmemcached',但現在由bmemcached團隊發佈新版本。他們告訴我使用[pylibmc](https://github.com/lericson/pylibmc)的解決方法。我沒有嘗試過,因爲現在我使用的是不同的附加組件,例如[redis雲](https://addons.heroku.com/marketplace/rediscloud) – anuragal
@anuragal您應該回答自己的問題。如果您知道他們記錄了哪個[問題](https://github.com/jaysonsantos/python-binary-memcached/issues),則可以將其鏈接。 –