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

Bry*_*ock 39 django 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  
Run Code Online (Sandbox Code Playgroud)

这是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()
Run Code Online (Sandbox Code Playgroud)

为什么Django无法写入数据?

我正在运行Django 1.2.4

Gra*_*ton 28

没有任何类型的Python回溯的错误可能是以下问题的变体:

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

也就是说,在Web服务器可以写回完整响应之前,HTTP客户端连接丢失时发生.它可以在Apache错误日志中显示为"客户端关闭连接","无法写入数据"或"无法刷新数据"IOError.即,WSGI应用程序没有看到,因为在WSGI应用程序返回后发生了数据写入,因此无法将异常返回给应用程序以执行任何操作.

问题是,如果您配置要在电子邮件中发送给您的错误,是否从Django收到错误消息.如果你这样做,那么Django就会发生一些事情.


ubi*_*bik 6

我在使用大量AJAX调用的应用程序(mod_wsgi 3.3)中遇到了同样的问题.有没有任何已知的解决方案?我想过只是忽略了异常,但这通常不是一个好主意.

UPDATE

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

我相信这会有所帮助:

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


chr*_*ley -5

我敢打赌这是一个权限问题。True 使目标目录/文件普遍可写。然后使该文件归您的 www-data 组(或您的 apache 用户是什么)所有,使其组可写,并确保该文件夹中的任何内容都不敏感,因为这可能是一个安全问题。