web-dev-qa-db-ja.com

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スクリプトは次のとおりです。

$ 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

39
BryanWheelock

そのエラーは、Python tracebackの種類がない場合、以下で説明されている問題のバリエーションである可能性があります。

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

つまり、完全な応答がWebサーバーによって書き戻される前にHTTPクライアント接続が失われた場合に発生します。 「クライアントが閉じた接続」、「データの書き込みに失敗しました」、または「データのフラッシュに失敗しました」というIOErrorは、Apacheエラーログにのみ記録されます。つまり、データの書き込みはWSGIアプリケーションが戻った後に発生しているため、アプリケーションに例外をスローして何かを行うことができないため、WSGIアプリケーションでは表示されません。

問題は、Djangoからエラーメッセージがメールで送信されるように設定されている場合に表示されるかどうかです。設定されている場合、Djangoで何かが発生しています。

29

AJAX呼び出し(mod_wsgi 3.3)を多く使用するアプリケーションで同じ問題があります。これに対する既知の解決策はありますか?例外を無視することを考えましたが、通常はそうではありませんとても良い考えです.

[〜#〜]更新[〜#〜]

実際には、いくつかの原因が考えられますが、最も可能性の高い原因は、出力をwriteingする代わりにyieldコールバックを使用していることです。

私はこれが役立つと信じています:

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

6
ubik

私はpython Webアプリで同じ問題を見つけました。ログファイルを真剣にチェックした後、データベースmysqlの問題であることがわかりました!問題の原因はストレージ(RAM)が不足しているという事実なので、それらの質問を確認して問題を解決してください!

` Mysqlの場合

そして this

それが役に立てば幸い

0