26

Django 1.2 開発サーバーを実行していますが、Chrome または Safari でそこからページを読み込むたびに、Broken Pipe エラー メッセージが表示されます。私の同僚も、開発サーバーからページをロードするときにエラーを受け取ります。Opera または Firefox を使用している場合、これらのエラーは発生しません。

Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/servers/basehttp.py", line 281, in run self.finish_response()
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/servers/basehttp.py", line 321, in finish_response self.write(data)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/servers/basehttp.py", line 417, in write self._write(data)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 300, in write self.flush()
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 286, in flush self._sock.sendall(buffer)
error: [Errno 32] Broken pipe

誰でも私を助けることができますか?私はこれに夢中になります!

4

6 に答える 6

22

これは Django の問題ではありません。お使いのブラウザが何らかのエラーを起こしている可能性があります。

これは、開発サーバーがまだデータの送信でビジー状態である間にブラウザが接続を閉じるたびに発生する一般的なエラーです。

詳細については、この Django チケットを確認してください。

于 2010-05-19T18:01:12.777 に答える
13

最近、django v1.1.1 開発サーバーと Chrome 7.0.517.44 でこの問題に遭遇しました。

私が発見した「修正」は、最初の読み込み後にページで常にハード リフレッシュ (Shift キーを押しながら Chrome のリロード ボタンをクリック) を実行しているため、Chrome はリフレッシュによって要求されたリソースのキャッシュを無視します。

そのため、これは、可能な限りすべてをキャッシュするという Chrome の悪名高い傾向の問題であると私は信じています。すべきではない場合でも。私の推測では、Chrome はリソース リクエストを作成し、そのリソースがキャッシュされていることを認識するとすぐにそのリソースの接続を切断していると思われます。

これは、AJAX 要求が依然として問題を引き起こすことを除いて、ほとんど耐えられる回避策です。

于 2010-11-11T21:07:49.707 に答える
3

ブラウザがサーバーとの接続を閉じると、パイプの破損が発生します。この問題は、クリック ハンドラー関数<a href="...を追加するのを忘れていたため、関連する ajax ポスト リクエストで以前に発生しました。e.preventDefault()そのため、ブラウザが投稿リクエストを送信し、接続を閉じて別の取得リクエストを送信するということが起こりました。したがって、投稿リクエストがブラウザによってキャンセルされたように見えます。

于 2012-05-23T07:43:42.633 に答える
2

おそらく関連する問題がありました。

Windows で Safari と Chrome を使用しているときに、django runserver のローカル マシンで、一部のビューがランダムに ajax POST 要求への応答を返していませんでした。

解決策はこれでした:

POST 経由でビューに渡していたデータは、1 つのキーと値のペア、「action=remove」だけでした。さて、私は実際にはこのデータを私の見解で使用していませんでした。ビューの var にデータを割り当てると (つまり、foo = request.POST['action'])、ビューは毎回 ajax リクエストに応答を返します。

絶対にクレイジー!

于 2010-10-19T17:28:46.840 に答える
0

これがJavaScriptクライアントで発生した場合、解決策は次のようになります。次のように、イベント ハンドラの最初と最後に andpreventDefaultを追加する必要があります。return false

$('#btn_analyze').click(function(e) {
    e.preventDefault()
    $.post('/api/v1/analyzer/',
        data,
        "json").done(function(response) {
        //...
    }).fail(function() {
        Logger.error(" Error ")
    })

    return false
}) // analyze click
于 2015-05-28T15:21:54.910 に答える