Django:进程之间无法访问缓存项目?

时间:2011-02-24 08:19:37

标签: django caching

我在使用django缓存时遇到问题。看起来缓存的项目不是 进程之间可读。这是设计的吗?我没有找到任何相关信息。

并行使用两个ssh会话在生产服务器上进行测试, 并将缓存设置为一个并使用另一个读取另一个 memcache后端(也使用基于文件的后端测试),这就是结果:

(第1节):

>>> from django.core.cache import cache
>>> cache.set('foo','bar')
>>> cache.get('foo')
'bar'

(第2节):

>>> from django.core.cache import cache
>>> cache.get('foo', 0) #Cache has not been set yet...
0
>>> cache.get('foo', 0) #Cache has been set in other session, I expect 'bar' here
0

我使用低级缓存api来缓存处理后的结果 上传的文件。然后,用户完成更多描述的步骤 上传的数据,此时它已输入数据库。这个完成了 异步使用apache2,每个进程一个线程,mod_wsgi和 python 2.5。我遇到的问题是"cache.get('<filekey>')" 当我测试并上传文件时,总是返回None。

由于

1 个答案:

答案 0 :(得分:1)

Django的缓存系统是几个不同缓存后端的抽象层。虽然它允许您使用相同的API与它们进行交互,但它们的行为会有所不同,具体取决于您配置的是哪一个。有关详细信息,请参阅documentation

您可以使用settings.py文件中的CACHE_BACKEND设置配置要使用的后端。如果您没有设置该设置,那么您将获得一个简单的进程内缓存,这可以解释为什么您无法访问在其他进程中设置的缓存值。我建议您查看memcached并使用您的后端。它非常快速,可扩展性也很容易配置。