2010-12-29 1 views
38

ce qui pourrait causer cette erreur:Pourquoi mod_wsgi n'est-il pas capable d'écrire des données? IOError: n'a pas réussi à écrire des données

$ queue sudo -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 

Voici le script WSGI:

Pourquoi Django ne serait-il pas capable d'écrire des données?
$ 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() 

Pourquoi Django ne pourrait-il pas écrire des données?

Je cours Django 1.2.4

+0

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

Répondre

-4

Je pariant qu'il est un problème d'autorisations. Vrai rendant le répertoire/fichier cible universellement accessible en écriture. Ensuite, créez le fichier appartenant à votre groupe www-data (ou quel que soit votre utilisateur apache), faites en sorte qu'il soit accessible en écriture et assurez-vous que rien dans ce dossier n'est sensible car cela pourrait poser un problème de sécurité.

26

Cette erreur, sans aucune sorte de retraçage Python, peut-être une variante de problème décrit dans:

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

C'est, se produit lorsque la connexion client HTTP est perdue avant que la réponse complète pourrait être réécrites par le serveur web. Il peut se manifester comme 'connexion fermée du client', 'échec d'écriture des données' ou 'échec de vidage des données' IOError dans le journal des erreurs Apache uniquement. C'est à dire, pas vu par WSGI applicaton parce que l'écriture de données se produit après que l'application WSGI est revenue et ne peut donc pas renvoyer d'exception à l'application pour faire quoi que ce soit.

La question est de savoir si vous obtenez un message d'erreur de Django si vous configurez les erreurs à vous envoyer par courrier électronique. Si c'est le cas, alors il se passe quelque chose dans Django.

+0

Mais comment le résoudre? Dans mon application, il semble être lié à send_mail (ce qui prend beaucoup de temps) ... – gabn88

+1

Il est inutile d'ajouter une question vague sans aucune information spécifique sur votre cas à un suivi existant de la question de quelqu'un d'autre. Votre situation pourrait être complètement différente. Créez une nouvelle question expliquant en détail votre problème. –

+0

Je suis désolé, mais j'ai eu la même erreur, et j'ai configuré Django pour envoyer des emails, mais je n'ai pas reçu de mail. Dans mon cas le problème était que j'ai changé mon mot de passe de boîte aux lettres smtp sans le changer dans Django. Pourrait aider quelqu'un dans le futur qui cherche le même problème comme je l'ai fait ... Aucun moyen de faire du mal à personne! – gabn88

5

J'ai le même problème dans une application qui utilise beaucoup d'appels AJAX (mod_wsgi 3.3). Y a-t-il une solution connue pour cela? J'ai pensé à ignorer l'exception, mais ce n'est normalement pas une très bonne idée.

MISE À JOUR

En fait, cela peut être dû à plusieurs choses, mais la cause la plus probable est que vous utilisez la fonction de rappel write au lieu de yield votre sortie ing.

Je crois que cela aidera:

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

+1

Cela arrivera soit avec l'écriture ou le rendement, ne fait aucune différence. Django n'utilise pas le rendement en écriture seule. Si l'écriture était utilisée, l'erreur se propagerait de nouveau dans l'application WSGI et l'application l'attraperait probablement et serait convertie en une 500 sans qu'elle soit enregistrée. Pour le rendement, c'est mod_wsgi qui écrit les données et aucun moyen de propager l'erreur à l'application, ainsi mod_wsgi enregistre l'erreur sans traceback comme non dans le contexte de l'application. –

0

J'ai trouvé le même problème avec mon application web python dans l'océan numérique et après avoir vérifié le fichier journal sérieusement que je l'ai découvert qu'il était un problème avec ma base de données mysql! Le problème était dû au fait que je manquais de stockage (RAM) Donc, vérifiez ces questions et résoudre le problème!

`For Mysql

Et this

espère que cela aidera

Questions connexes