为什么mod_wsgi无法写入数据? IOError:写入数据失败

什么可能导致这个错误:

$ 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 

这是WSGI脚本:

 $ 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() 

为什么Django不能写数据?

我正在运行Django 1.2.4

这个错误,没有任何Python追溯,可能是一个问题上的变化:

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

也就是说,当HTTP客户端连接在Web服务器写回完整响应之前丢失。 它只能在Apache错误日志中显示为“客户端closures连接”,“无法写入数据”或“无法刷新数据”IOError。 也就是说,WSGI应用程序看不到,因为数据的写入是在WSGI应用程序返回之后发生的,所以不能将exception抛出到应用程序中去做任何事情。

问题是如果你configuration错误发送给你在电子邮件从Django是否得到一个错误消息。 如果你这样做,而是在Django发生的事情。

我在使用大量AJAX调用(mod_wsgi 3.3)的应用程序中遇到同样的问题。 有没有已知的解决scheme呢? 我想忽略例外情况,但这通常不是一个好主意。

UPDATE

实际上,这可能是由于几件事情,但最可能的原因是你正在使用writecallback,而不是yield你的输出。

我相信这将有助于:

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

我在Digital Ocean中发现了与我的python web应用程序相同的问题,在仔细检查日志文件之后,我发现这是我的数据库mysql的问题! 问题是由于我用完存储(RAM)的事实所以检查这些问题并解决问题!

` 对于Mysql

而这个

希望它会有所帮助

我打赌这是一个权限问题。 真正使目标目录/文件通用可写。 然后制作由www-data组(或者你的apache用户)拥有的文件,使它成为可写组,并确保该文件夹中没有任何内容是敏感的,因为这可能是一个安全问题。