2010-12-29 9 views
38

Co może być przyczyną tego błędu:Dlaczego mod_wsgi nie jest w stanie zapisywać danych? IOError: nie można zapisać danych

$ 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 

Oto skrypt 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() 

Dlaczego Django nie mógłby zapisać danych?

Używam Django 1.2.4

+0

related: http: //stackoverflow.com/a/7089413/633961 – guettli

Odpowiedz

-4

Jestem zakłady Jest to problem uprawnienia. Prawdziwe ustawienie katalogu docelowego/pliku do uniwersalnego zapisu. Następnie należy utworzyć plik należący do grupy danych WWW (lub dowolnego innego użytkownika Apache), sprawić, aby był on zapisywalny do grupy i upewnić się, że nic w tym folderze nie jest wrażliwe, ponieważ może to być problem z zabezpieczeniami.

26

To błąd, bez jakiejkolwiek Python traceback może być wariacją na temat problemu opisanego w:

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

Oznacza to, że pojawia się, gdy HTTP połączenie klient jest stracone, zanim pełna odpowiedź mogłaby być zapisywane przez serwer sieciowy. Może manifestować się jako "połączenie klienckie zamknięte", "nie można zapisać danych" lub "nie udało się opróżnić danych" IOError tylko w dzienniku błędów Apache. Tj., Nie widziane przez aplikację WSGI, ponieważ zapis danych następuje po zwróceniu aplikacji WSGI i nie można wrzucić wyjątku z powrotem do aplikacji, aby cokolwiek zrobić.

Pytanie brzmi, czy otrzymasz komunikat o błędzie od Django, jeśli skonfigurujesz błędy, które będą wysyłane do Ciebie pocztą e-mail. Jeśli tak, to zamiast tego dzieje się coś w Django.

+0

Ale jak go rozwiązać? W mojej aplikacji wydaje się być powiązany z send_mail (co zajmuje dużo czasu) ... – gabn88

+1

Nie ma sensu dodawać niejasnego pytania bez konkretnych informacji na temat twojej sprawy do istniejącej odpowiedzi na cudze pytanie. Twoja sytuacja może być zupełnie inna. Utwórz nowe pytanie wyjaśniające szczegółowo Twój problem. –

+0

Przykro mi, ale mam ten sam błąd i skonfigurowałem Django do wysyłania wiadomości e-mail, ale nie dostałem poczty. W moim przypadku problem polegał na tym, że zmieniłem hasło do skrzynki pocztowej smtp bez zmiany jej w Django. Może pomóc komuś w przyszłości, który szuka tego samego problemu, co ja ... Nie ma sposobu, by nikomu zaszkodzić! – gabn88

5

Mam ten sam problem w aplikacji, która używa wielu wywołań AJAX (mod_wsgi 3.3). Czy istnieje jakieś znane rozwiązanie? Myślałem o ignorowaniu wyjątku, ale zwykle nie jest to dobry pomysł.

UPDATE

Faktycznie, może to wynikać z kilku rzeczy, ale najbardziej prawdopodobną przyczyną jest to, że używasz write zwrotnego zamiast yield ing wydruku.

wierzę, że to pomoże:

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

+1

Wystąpi z napisem lub zyskiem, nie robi różnicy. Django nie wykorzystuje wydajności tylko do zapisu. Jeśli byłby używany zapis, błąd byłby propagowany z powrotem do aplikacji WSGI, a aplikacja prawdopodobnie go przechwyci i zostanie przekonwertowana na 500, przy czym nie będzie rejestrowana. Dla wydajności jest to mod_wsgi zapisywanie danych i nie ma możliwości propagacji błędu z powrotem do aplikacji, więc mod_wsgi rejestruje błąd bez śledzenia, co nie ma miejsca w kontekście aplikacji. –

0

Znalazłem ten sam problem z moim Pythona aplikacji internetowej w formie oceanu i po sprawdzeniu plik dziennika poważnie Odkryłam, że to był problem z moją bazą danych mysql! Problem wynikał z faktu, że skończył mi się magazyn (RAM) . Sprawdź to pytanie i rozwiąż problem!

`For Mysql

I this

nadzieję, że pomoże

Powiązane problemy