可能导致此错误:
$ 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
答案 0 :(得分:28)
该错误,没有任何类型的Python回溯,可能是以下问题的变体:
http://code.google.com/p/modwsgi/issues/detail?id=29&can=1
即,在Web服务器可以写回完整响应之前,HTTP客户端连接丢失时发生。它可以在Apache错误日志中显示为“客户端关闭连接”,“无法写入数据”或“无法刷新数据”IOError。也就是说,WSGI应用程序没有看到,因为在WSGI应用程序返回后发生了数据写入,因此无法将异常返回给应用程序以执行任何操作。
问题是,如果您配置要在电子邮件中发送给您的错误,是否从Django收到错误消息。如果你这样做,那么就是在Django中发生的事情。
答案 1 :(得分:6)
我在使用大量AJAX调用的应用程序中遇到同样的问题(mod_wsgi 3.3)。有没有任何已知的解决方案?我想只是忽略了异常,但这通常不是一个好主意。
<强>更新强>
实际上,这可能是由于某些原因造成的,但最可能的原因是您使用write
回调而不是yield
输出。
我相信这会有所帮助:
http://groups.google.com/group/modwsgi/browse_thread/thread/c9cc1307bc10cfff
答案 2 :(得分:0)
我在Digital Ocean中发现了与我的python web应用程序相同的问题,并且在仔细检查了日志文件之后我发现这是我的数据库mysql的一个问题! 问题是由于我的存储空间不足(RAM) 所以检查这些问题并解决问题!
希望它会有所帮助
答案 3 :(得分:-4)
我在下注这是一个权限问题。真正使目标目录/文件普遍可写。然后使您的www-data组拥有该文件(或您的apache用户所拥有的文件),使其成为可写组,并确保该文件夹中的任何内容都不敏感,因为这可能是一个安全问题。