Почему mod_wsgi не может записывать данные? Ошибка ввода-вывода: не удалось записать данные - PullRequest
39 голосов
/ 30 декабря 2010

Что может быть причиной этой ошибки:

$ 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 1.2.4

Ответы [ 4 ]

28 голосов
/ 30 декабря 2010

Эта ошибка, без какой-либо обратной трассировки Python, может быть вариацией проблемы, описанной в:

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

То есть возникает, когда соединение клиента HTTP теряется до полногоответ может быть записан обратно веб-сервером.Он может проявляться как «клиент закрыл соединение», «не удалось записать данные» или «не удалось сбросить данные» IOError только в журнале ошибок Apache.То есть, не виден приложением WSGI, потому что запись данных происходит после того, как приложение WSGI вернулось, и поэтому не может выбросить исключение обратно в приложение, чтобы что-либо делать с.

Вопрос в том, возникает ли ошибкасообщение от Django, если вы настроите ошибки для отправки вам по электронной почте.Если вы это сделаете, то вместо этого что-то происходит в Джанго.

6 голосов
/ 29 марта 2011

У меня та же проблема в приложении, которое использует много вызовов AJAX (mod_wsgi 3.3). Есть ли известное решение для этого? Я думал о том, чтобы просто игнорировать исключение, но обычно это не очень хорошая идея.

UPDATE

На самом деле, это может быть связано с несколькими причинами, но наиболее вероятной причиной является то, что вы используете обратный вызов write вместо yield вывода.

Я верю, что это поможет:

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

0 голосов
/ 15 мая 2017

Я обнаружил ту же проблему с моим веб-приложением на python в Digital Ocean, и после серьезной проверки файла журнала обнаружил, что это была проблема с моей базой данных mysql! Проблема была из-за того, что у меня заканчивалось хранилище (ОЗУ) Так что проверь эти вопросы и реши проблему!

` Для Mysql

А это

Надеюсь, это поможет

0 голосов
/ 30 декабря 2010

Держу пари, это проблема с разрешениями.Правда делает целевой каталог / файл доступным для записи.Затем создайте файл, принадлежащий вашей группе www-данных (или какому-либо другому пользователю apache), сделайте его доступным для записи и убедитесь, что ничего в этой папке не является конфиденциальным, поскольку это может быть проблемой безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...