当前位置:  开发笔记 > 编程语言 > 正文

如何告诉Django,memcached运行的item-size大于默认值?

如何解决《如何告诉Django,memcached运行的item-size大于默认值?》经验,为你挑选了1个好方法。

我使用新设置来增加memcached中的项目大小,但我不能通过Django后端存储大于1mb的内容.我知道该memcache模块需要一些设置来实现它,而Django在后端使用这个模块.



1> Bouke..:

从memcache.py中可以保存在memcached中的最大对象大小:

在memcached FAQ中有两个条目:

您可以存储的最大数据大小是多少?为什么物品的尺寸限制在1兆?第一个答案是(引用,强调我的):

您可以在memcached中存储的值的最大大小为1兆字节.如果您的数据较大,请考虑客户端压缩或将值拆分为多个键.

所以我猜你的11MB文件太大了,无法放入一个memcached条目中.

如果你真的想要缓存更大的对象,你将不得不继承Django的MemcachedCache,因为它不允许你传入选项:

self._client = self._lib.Client(self._servers, pickleProtocol=pickle.HIGHEST_PROTOCOL)

示例子类实现:

from django.core.cache.backends.memcached import MemcachedCache

class LargeMemcachedCache(MemcachedCache):
    "Memcached cache for large objects"

    @property
    def _cache(self):
        if getattr(self, '_client', None) is None:
            self._client = self._lib.Client(self._servers, 
                           pickleProtocol=pickle.HIGHEST_PROTOCOL, 
                           server_max_value_length = 1024*1024*10)
        return self._client

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有