当Memcached发生故障时,为什么Django会失败?

时间:2012-09-04 08:53:29

标签: django

我正在运行带有memcached后端的Django 1.3实例用于缓存层,最近我一直在尝试为应用程序调试数据库的一部分,但每当我将memcached服务器脱机时,我都会得到以下内容错误:

AttributeError at /joinerysoft/contacts/ajax/all/None/None/
'NoneType' object has no attribute 'sendall'
Request Method: GET
Request URL:    http://joinerysoft-directory.co.uk/joinerysoft/contacts/ajax/all/None/None/
Django Version: 1.3.1
Exception Type: AttributeError
Exception Value:    'NoneType' object has no attribute 'sendall'
Exception Location: /usr/lib/python2.7/dist-packages/memcache.py in send_cmd, line 1112
Python Executable:  /usr/bin/python
Python Version: 2.7.3

我认为memcached + django的吸引力在于,如果内存缓存消失,你的网站仍然可以运行(虽然已经瘫痪),直到它返回。我确实使用Django的内置缓存。

1 个答案:

答案 0 :(得分:1)

首先,这不是来自Django的错误,而是来自python-memcached库。 其次我认为这种行为是一致的。如果你配置Django使用memcached并且它关闭,那么它应该抛出错误!假设您的站点在很大程度上依赖于缓存,您还希望尽快知道是否发生了什么事情,并且在几天之后还没有弄清楚您的整个数据库是否已关闭,因为查询太多(例如)。

有多种方法可以定义回退缓存或执行其他解决方法。看看这个类似的问题:Is there a way to ignore Cache errors in Django?