Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django缓存重数据时出现内存错误_Python_Django_Caching_Memcached_Django Sessions - Fatal编程技术网

Python 使用Django缓存重数据时出现内存错误

Python 使用Django缓存重数据时出现内存错误,python,django,caching,memcached,django-sessions,Python,Django,Caching,Memcached,Django Sessions,我使用Django来归档一个web,其中包含一个大映像堆栈(每个大约150mb)中动态生成的映像。假设它是交互式的,所以我需要缓存选定的堆栈。为此,我使用memcached缓存后端和“django.contrib.sessions.backends.cache”会话引擎 问题是,当我使用会话数据呈现页面时,我总是得到MemoryError。 这是更有效的方法吗? 我想这是数据大小的问题。无论如何都是增加内存大小吗?另一种解决方法 In views.py def images(request):

我使用Django来归档一个web,其中包含一个大映像堆栈(每个大约150mb)中动态生成的映像。假设它是交互式的,所以我需要缓存选定的堆栈。为此,我使用memcached缓存后端和“django.contrib.sessions.backends.cache”会话引擎

问题是,当我使用会话数据呈现页面时,我总是得到MemoryError。 这是更有效的方法吗? 我想这是数据大小的问题。无论如何都是增加内存大小吗?另一种解决方法

In views.py

def images(request):

    if request.method == 'POST':

        info_form = InfoForm(request.POST)

        if (info_form.is_valid()):

            if selected_stack_changed:
                matrix = get_matrix(stack_id)
                request.session['matrix'] = matrix
            else:
                matrix = request.session['matrix']

    return render(request, url)
在settings.py中

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

SESSION_ENGINE = "django.contrib.sessions.backends.cache"
这里是我得到的完整错误:

Internal Server Error: /data/
Traceback (most recent call last):
File "/home/user/.local/lib/python2.7/site-packages/django/core/handlers/base.py", line 235, in get_response
response = middleware_method(request, response)
File "/home/user/.local/lib/python2.7/site-packages/django/contrib/sessions/middleware.py", line 50, in process_response
request.session.save()
File "/home/user/.local/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py", line 62, in save
self.get_expiry_age())
File "/home/user/.local/lib/python2.7/site-packages/django/core/cache/backends/memcached.py", line 83, in set
if not self._cache.set(key, value, self.get_backend_timeout(timeout)):
File "/home/user/.local/lib/python2.7/site-packages/memcache.py", line 740, in set
return self._set("set", key, val, time, min_compress_len, noreply)
File "/home/user/.local/lib/python2.7/site-packages/memcache.py", line 1060, in _set
return _unsafe_set()
File "/home/user/.local/lib/python2.7/site-packages/memcache.py", line 1034, in _unsafe_set
store_info = self._val_to_store_info(val, min_compress_len)
File "/home/user/.local/lib/python2.7/site-packages/memcache.py", line 998, in _val_to_store_info
pickler.dump(val)
MemoryError

理想情况下,memcached服务器不应与web服务器位于同一主机上。一个标准的memcached安装将有多个memcached实例独立运行在它自己的单个服务器上,这些服务器靠近web服务器,并且web服务器通过网络与它们对话。更复杂的安装将有多个memcached实例,由一个代理管理,该代理将请求路由到memcached服务器主机。执行此操作的一个常用代理是。

理想情况下,memcached服务器不应与web服务器位于同一主机上。一个标准的memcached安装将有多个memcached实例独立运行在它自己的单个服务器上,这些服务器靠近web服务器,并且web服务器通过网络与它们对话。更复杂的安装将有多个memcached实例,由一个代理管理,该代理将请求路由到memcached服务器主机。一个常用的代理是。

如果您实际演示了如何使用memcached,可能会有人能够帮助您!但请注意,它的设计不是为了容纳非常大的物体。默认的最大对象大小为1MB,但可以增加。如果您实际演示了如何使用memcached,可能会有人帮助您!但请注意,它的设计不是为了容纳非常大的物体。默认最大对象大小为1MB,但可以增加。