Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django Broken pipe in Debug mode

I have django 1.3 on the remote server behind Nginx.

If I run django with apache + mod_wsgi, I can watch errors in apache log files. It's ok but I'd like to have in console.

If I run django own development server, I get errors with stacktrace in console only when DEBUG = False. In DEBUG mode console outputs

Exception happened during processing of request from (..., ...) Traceback (most recent call last):   File "/usr/local/python/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock     self.process_request(request, client_address)   File "/usr/local/python/lib/python2.7/SocketServer.py", line 310, in process_request     self.finish_request(request, client_address)   File "/usr/local/python/lib/python2.7/SocketServer.py", line 323, in finish_request     self.RequestHandlerClass(request, client_address, self)   File "/usr/local/python/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 570, in __init__     BaseHTTPRequestHandler.__init__(self, *args, **kwargs)   File "/usr/local/python/lib/python2.7/SocketServer.py", line 641, in __init__     self.finish()   File "/usr/local/python/lib/python2.7/SocketServer.py", line 694, in finish     self.wfile.flush()   File "/usr/local/python/lib/python2.7/socket.py", line 301, in flush     self._sock.sendall(view[write_offset:write_offset+buffer_size]) error: [Errno 32] Broken pipe 

I want to figure out why? Why does django just output unnamed Exception? Why does it depend on DEBUG variable.

This errors occurs mostly outside views when I have no access to request object. So I can't catch it in middleware or using logging handler.

UPDATE. I noticed if I request to django server directly I never get Broken pipe. So may the issue occur while Nginx proxy django?

like image 229
San4ez Avatar asked Oct 27 '11 07:10

San4ez


People also ask

What is broken pipe error Django?

According to many sources the 'Broken Pipe' is a normal browser quirk. For example, the browser reads from the socket and then decides that the image it's been reading apparently didn't change. The browser now this (forcefully) closes the connection because it does not need more data.

What causes broken pipe error?

This error generally means means that the data stopped flowing to us and we were unable to start the transfer again. Often times this is caused by a wireless internet connection with fluctuating signal strength, a firewall or other security software.

What is broken pipe error in Python?

A broken Pipe Error is generally an Input/Output Error, which is occurred at the Linux System level. The error has occurred during the reading and writing of the files and it mainly occurs during the operations of the files.


1 Answers

This isn't really an issue with your site, more with the Django devserver: see this Django ticket. To put it bluntly, just ignore it as it is a known error, and won't be fixed.

In that ticket's comments a quite clear explanation is given:

According to many sources the 'Broken Pipe' is a normal browser quirk. For example, the browser reads from the socket and then decides that the image it's been reading apparently didn't change. The browser now this (forcefully) closes the connection because it does not need more data. The other end of this socket (the python runserver) now raises a socket exception telling the program that the client 'Broke the socket pipe'.

like image 79
jro Avatar answered Oct 12 '22 02:10

jro