【问题标题】:Why is mod_wsgi not able to write data? IOError: failed to write data为什么 mod_wsgi 无法写入数据? IOError:写入数据失败
【发布时间】:2017-05-15 05:37:27
【问题描述】:

可能导致此错误的原因:

$ 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

【问题讨论】:

标签: django mod-wsgi ioerror


【解决方案1】:

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

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

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

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

【讨论】:

  • 但是如何解决呢?在我的应用程序中,它似乎与 send_mail 相关(需要很长时间)......
  • 在对他人问题的现有跟进中添加一个没有关于您的案例的具体信息的模糊问题是没有意义的。你的情况可能完全不同。创建一个新问题,详细解释您的问题。
  • 很抱歉,我遇到了同样的错误,我将 Django 配置为发送电子邮件,但没有收到邮件。就我而言,问题是我更改了我的 smtp 邮箱密码,而没有在 Django 中更改它。可能会帮助将来像我一样寻找同样问题的人......没有办法伤害任何人!
【解决方案2】:

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

更新

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

我相信这会有所帮助:

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

【讨论】:

  • 无论是 write 还是 yield 都会发生,没有区别。 Django 不使用只写收益。如果正在使用 write,则错误将传播回 WSGI 应用程序,并且应用程序可能会捕获它并转换为 500 而不会记录它。对于产量,是 mod_wsgi 写入数据并且无法将错误传播回应用程序,因此 mod_wsgi 记录错误而没有回溯,因为它不在应用程序的上下文中。
【解决方案3】:

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

`For Mysql

还有this

希望对你有帮助

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多