Have you considered the possibility that it would be a client/browser
side error?

Both windows7 and chrome have a known open bug with large file
uploads. Many of my customers have reported this bug, all of them
using windows7 and chrome.

Has anyone seen this happening from a Mac or from Linux?

On Feb 4, 2:28 am, Tai Lee <real.hu...@mrmachine.net> wrote:
> Thanks for your detailed explanation, Graham. I'll try to approach
> this from another angle and see if I can determine what is actually
> causing the connections to be dropped, as I'm seeing this error a few
> times a day on a low traffic site using Apache at the front for static
> media, with proxy pass to Django under Apache/mod_wsgi.
>
> Cheers.
> Tai.
>
> On Feb 4, 6:17 pm, Graham Dumpleton <graham.dumple...@gmail.com>
> wrote:
>
>
>
> > The problem is you can't just catch IOError, because the presence of WSGI
> > middleware may mean that IOError could be generated for other reasons when
> > reading wsgi.input. To base detection on the description in the IOError,
> > ie., 'request data read error', would mean having to know what that
> > description could be on all WSGI hosting mechanisms, and then just hope that
> > there aren't other reasons why it could arise from WSGI middleware.
>
> > So, no simple solution. This unfortunately is one of the short comings of
> > the WSGI specification. That is, there is no standardised exception type to
> > represent actual real problems with reading original wsgi.input. Part of the
> > reason is that there is no standard module associated with the WSGI
> > specification to hold the exception type, so nothing to compare against. The
> > only solution would be for WSGI specification to be enhanced to require a
> > unique exception type to be used for wsgi.input exceptions such as aborted
> > connection, with the type of that exception being passed through in the WSGI
> > environ dictionary so it could be compare against. For example something
> > like:
>
> >   try:
> >     data = environ['wsgi.input'].read()
> >   except wsgi['wsgi.input_exception], e:
> >     # ignore it
>
> > In summary, no real practical solution at this time for this.
>
> > Graham
>
> > On Friday, February 4, 2011 1:55:25 PM UTC+11, Tai Lee wrote:
>
> > > There are many questions about this on django-users. The usual answer
> > > is to ignore the errors, which are probably generated as a result of
> > > the client prematurely terminating a connection, usually during an
> > > upload.
>
> > > Nobody seems to be able to reliably reproduce the error, and it seems
> > > to happen with large and small uploads alike, but always
> > > intermittently.
>
> > > It has been suggested that a client dropping the connection should be
> > > within what one can expect from a networked client, and thus Django
> > > should not email the exception and traceback to the admins in this
> > > case. From my preliminary investigation with this issue, I tend to
> > > agree.
>
> > > Is it feasible to handle this exception in Django, or are there other
> > > issues that would prevent us from isolating this case from other
> > > legitimate exceptions that may be raised at this point?
>
> > > Here's a recent traceback:
>
> > > Traceback (most recent call last):
>
> > >  File "/home/tailee/django/core/handlers/base.py", line 105, in
> > > get_response
> > >    response = middleware_method(request, callback, callback_args,
> > > callback_kwargs)
>
> > >  File "/home/tailee/django/middleware/csrf.py", line 224, in
> > > process_view
> > >    request_csrf_token = request.POST.get('csrfmiddlewaretoken', '')
>
> > >  File "/home/tailee/django/core/handlers/wsgi.py", line 209, in
> > > _get_post
> > >    self._load_post_and_files()
>
> > >  File "/home/tailee/django/http/__init__.py", line 207, in
> > > _load_post_and_files
> > >    self._post, self._files = self.parse_file_upload(self.META, self)
>
> > >  File "/home/tailee/django/http/__init__.py", line 169, in
> > > parse_file_upload
> > >    return parser.parse()
>
> > >  File "/home/tailee/django/http/multipartparser.py", line 192, in
> > > parse
> > >    for chunk in field_stream:
>
> > >  File "/home/tailee/django/http/multipartparser.py", line 314, in next
> > >    output = self._producer.next()
>
> > >  File "/home/tailee/django/http/multipartparser.py", line 468, in next
> > >    for bytes in stream:
>
> > >  File "/home/tailee/django/http/multipartparser.py", line 314, in next
> > >    output = self._producer.next()
>
> > >  File "/home/tailee/django/http/multipartparser.py", line 375, in next
> > >    data = self.flo.read(self.chunk_size)
>
> > >  File "/home/tailee/django/http/multipartparser.py", line 405, in read
> > >    return self._file.read(num_bytes)
>
> > >  File "/home/tailee/django/http/__init__.py", line 231, in read
> > >    return self._stream.read(*args, **kwargs)
>
> > > IOError: request data read error

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to