错误:[Errno 32] 破损的管道django

7
有时当我查看我的终端时,会看到以下错误,请问有人能告诉我它为什么会显示,并且如何避免它出现?
Exception happened during processing of request from ('127.0.0.1', 39444)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 582, in process_request_thread
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/home/comp/Envs/proj/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 150, in __init__
    super(WSGIRequestHandler, self).__init__(*args, **kwargs)
  File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__
    self.finish()
  File "/usr/lib/python2.7/SocketServer.py", line 693, in finish
    self.wfile.flush()
  File "/usr/lib/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe

1
查看得票最多的答案:https://dev59.com/pmsz5IYBdhLWcg3wbHEw - danielcorreia
2个回答

6
你得到该错误是由于以下两个原因之一。你也可能由于其他原因看到相同的问题。
1-在您的url末尾缺少“/”,您可以通过在所请求的URL末尾添加“/”来修复它。
2-您发出了一些请求,然后很快停止了。 例如调用一个url,然后取消调用并调用另一个url。检查您在哪里发起调用(JavaScript还是后端),并确保您调用url时没有将其取消。

2
这可能是因为您使用了两种方法将数据插入数据库,导致网站变慢。
def add_subscriber(request, email=None):
    if request.method == 'POST':
        email = request.POST['email_field']
        e = Subscriber.objects.create(email=email).save()  <==== 
        return HttpResponseRedirect('/')
    else:
        return HttpResponseRedirect('/')

例如,在上面的函数中,箭头指向错误之处。实现上述功能的正确方法是:

def add_subscriber(request, email=None):
    if request.method == 'POST':
        email = request.POST['email_field']
        e = Subscriber.objects.create(email=email)
        return HttpResponseRedirect('/')
    else:
        return HttpResponseRedirect('/')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接