Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is mod_wsgi not able to write data? IOError: failed to write data

What could be causing this error:

$ sudo tail -n 100 /var/log/apache2/error.log'

[Wed Dec 29 15:20:03 2010] [error] [client 220.181.108.181] mod_wsgi (pid=20343): Exception occurred processing WSGI script '/home/username/public_html/idm.wsgi'.   [Wed Dec 29 15:20:03 2010] [error] [client 220.181.108.181] IOError: failed to write data   

Here is the WSGI script:

$ cat public_html/idm.wsgi  import os import sys  sys.path.append('/home/username/public_html/IDM_app/')  os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'  import django.core.handlers.wsgi  application = django.core.handlers.wsgi.WSGIHandler() 

Why would Django not be able to write data?

I'm running Django 1.2.4

like image 452
BryanWheelock Avatar asked Dec 29 '10 21:12

BryanWheelock


2 Answers

That error, without any sort of Python traceback, may be a variation on issue described in:

http://code.google.com/p/modwsgi/issues/detail?id=29&can=1

That is, occurs when HTTP client connection is lost before the full response could be written back by the web server. It can manifest as 'client closed connection', 'failed to write data' or 'failed to flush data' IOError in Apache error log only. Ie., not seen by WSGI applicaton because the writing of data is occurring after WSGI application has returned and so can't throw exception back to the application to do anything with.

The question is whether you get an error message from Django if you configure errors to be sent to you in email. If you do, then instead is something happening in Django.

like image 102
Graham Dumpleton Avatar answered Sep 28 '22 00:09

Graham Dumpleton


I have the same problem in an application that uses a lot of AJAX calls (mod_wsgi 3.3). Is there any known solution for this? I thought about just ignoring the exception, but that is normally not a very good idea.

UPDATE

Actually, this can be due to several things, but the most probable cause is that you are using the write callback instead of yielding your output.

I believe this will help:

http://groups.google.com/group/modwsgi/browse_thread/thread/c9cc1307bc10cfff

like image 45
ubik Avatar answered Sep 27 '22 23:09

ubik