django ConnectionError: Error 104 while writing to socket. Connection reset by peer

django ConnectionError: Error 104 while writing to socket. Connection reset by peer错误提示:

Internal Server Error: /api/v2/chenxm/
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, **kwargs)
  File "/home/chenxinming/StructureSearchViews/views.py", line 27, in post
    data = self.run(obj_keys, concept_name, startPos, endPos)
  File "/home/chenxinming/StructureSearch/structureSearch.py", line 546, in run
    data = self.getObjectData(union_obj_keys, type)
  File "/home/chenxinming/StructureSearch/structureSearch.py", line 462, in getObjectData
    concept_map = Object.bulkGetObjectConcept(obj_keys)
  File "/home/chenxinming/object.py", line 868, in bulkGetObjectConcept
    concept_li = p.execute()
  File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 2894, in execute
    return execute(conn, stack, raise_on_error)
  File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 2810, in _execute_pipeline
    connection.send_packed_command(all_cmds)
  File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 603, in send_packed_command
    (errno, errmsg))
ConnectionError: Error 104 while writing to socket. Connection reset by peer.

经过检查和排查发现redis获取数据量过大,导致redis中断连接。

with cache.pipeline(transaction=False) as p:
    for english_name in english_li:
        p.hget(keyName._getConceptNameTable(), english_name)
    concept_li = p.execu

原因是因为使用pipeline时,english_li的长度超过10w导致。修改限制english_li的长度数量

相关文章

注:所有源代码均实测运行过。所有源代码均已上传CSDN,请有...
继承APIView和ViewSetMixin;作用也与APIView基本类似,提供...
一、Django介绍Python下有许多款不同的 Web 框架。Django是重...
本文从nginx快速掌握到使用,gunicorn快速掌握到使用,实现小...
uniapp微信小程序订阅消息发送服务通知
Django终端打印SQL语句 1 Setting配置: 2 默认python 使用的...