このエラーの原因は何ですか?
$ 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
そのエラーは、Python tracebackの種類がない場合、以下で説明されている問題のバリエーションである可能性があります。
http://code.google.com/p/modwsgi/issues/detail?id=29&can=1
つまり、完全な応答がWebサーバーによって書き戻される前にHTTPクライアント接続が失われた場合に発生します。 「クライアントが閉じた接続」、「データの書き込みに失敗しました」、または「データのフラッシュに失敗しました」というIOErrorは、Apacheエラーログにのみ記録されます。つまり、データの書き込みはWSGIアプリケーションが戻った後に発生しているため、アプリケーションに例外をスローして何かを行うことができないため、WSGIアプリケーションでは表示されません。
問題は、Djangoからエラーメッセージがメールで送信されるように設定されている場合に表示されるかどうかです。設定されている場合、Djangoで何かが発生しています。
AJAX呼び出し(mod_wsgi 3.3)を多く使用するアプリケーションで同じ問題があります。これに対する既知の解決策はありますか?例外を無視することを考えましたが、通常はそうではありませんとても良い考えです.
[〜#〜]更新[〜#〜]
実際には、いくつかの原因が考えられますが、最も可能性の高い原因は、出力をwrite
ingする代わりにyield
コールバックを使用していることです。
私はこれが役立つと信じています:
http://groups.google.com/group/modwsgi/browse_thread/thread/c9cc1307bc10cfff