Почему 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
Вот WSGI script:
$ 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
Ответы
Ответ 1
Эта ошибка без какой-либо трассировки Python может быть вариантом, описанным в:
http://code.google.com/p/modwsgi/issues/detail?id=29&can=1
То есть, происходит, когда соединение HTTP-клиента теряется до того, как полный ответ может быть записан веб-сервером. Он может проявляться как "закрытое соединение клиента", "не удалось записать данные" или "не удалось очистить данные" IOError только в журнале ошибок Apache. То есть, не видно из приложения WSGI, поскольку запись данных происходит после того, как приложение WSGI вернулось и поэтому не может отбросить исключение обратно в приложение, чтобы что-либо сделать с помощью.
Вопрос заключается в том, получаете ли вы сообщение об ошибке из Django, если вы настраиваете ошибки для отправки по электронной почте. Если да, то вместо этого происходит что-то в Django.
Ответ 2
У меня такая же проблема в приложении, которое использует много вызовов AJAX (mod_wsgi 3.3). Есть ли известное решение для этого? Я думал о просто игнорировании исключения, но это, как правило, не очень хорошая идея.
UPDATE
На самом деле это может быть связано с несколькими вещами, но наиболее вероятной причиной является то, что вы используете обратный вызов write
вместо yield
вашего вывода.
Я считаю, что это поможет:
http://groups.google.com/group/modwsgi/browse_thread/thread/c9cc1307bc10cfff
Ответ 3
Я нашел ту же проблему с моим веб-приложением python в Digital ocean и после проверки файла журнала серьезно я обнаружил, что это была проблема с моей базой данных mysql!
Проблема была связана с тем, что у меня закончилось хранилище (ОЗУ)
Поэтому проверьте этот вопрос и решите проблему!
`Для Mysql
И this
Надеюсь, что это поможет
Ответ 4
Я делаю ставки, это вопрос с разрешениями. True делает целевой каталог/файл универсальным для записи. Затем сделайте файл, принадлежащий вашей группе www-data (или независимо от вашего пользователя Apache), сделайте его доступным для группы и убедитесь, что ничего в этой папке не является чувствительным, поскольку это может быть проблемой безопасности.