42

可能导致此错误的原因:

$ 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

4

4 回答 4

31

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

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

也就是说,当 HTTP 客户端连接在 Web 服务器写回完整响应之前丢失时发生。它只能在 Apache 错误日志中表现为“客户端关闭连接”、“写入数据失败”或“刷新数据失败”IOError。即,WSGI 应用程序看不到,因为数据的写入是在 WSGI 应用程序返回之后发生的,因此不能将异常抛回应用程序以执行任何操作。

问题是如果您将错误配置为通过电子邮件发送给您,您是否会从 Django 收到错误消息。如果你这样做了,那么 Django 中就会发生一些事情。

于 2010-12-30T07:55:03.540 回答
6

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

更新

实际上,这可能是由于多种原因造成的,但最可能的原因是您使用的是write回调而不是yield输出。

我相信这会有所帮助:

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

于 2011-03-29T13:15:52.160 回答
0

我在 Digital Ocean 中的 python web 应用程序中发现了同样的问题,在认真检查日志文件后,我发现这是我的数据库 mysql 的问题!问题是由于我的存储空间(RAM)用完了所以检查这些问题并解决问题!

`对于 MySQL

希望它会有所帮助

于 2017-05-14T21:37:27.840 回答
-5

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

于 2010-12-29T23:26:50.867 回答