そのため、Pylons でのファイルのアップロードに関してかなり厄介な問題が発生しており、誰かが私を支援してくれることを望んでいます。当初、これは Pylons の問題であると考えてここに問題を投稿しましたが、その後、問題はサーバー、つまり貼り付けによるものであると結論付け、問題が発生した場所を正確に追跡しましたが、不明ですそれを解決する方法。動作は次のとおりです。私は、paster を介して提供している Pylons Web アプリケーションを持っています。アプリケーションの 1 つは、ユーザーがシステムにファイルをアップロードできるようにするもので、ファイルのサイズがかなり大きくなる場合があります (> 50mb)。このようなアップロード中に、サーバーは散発的に接続をリセットします (つまり、Chrome では、「エラー 101 (net::ERR_CONNECTION_RESET): 接続がリセットされました。」というエラーが表示されます) 。大きなファイルでは約 50% の確率で発生します。
このような場合、サーバーは POST をアプリケーション レベルに渡すことはありません。例外はスローされません (少なくとも、私が見つけることができる)。問題を cascade.py (特に、httpserver.py から呼び出される wsgi_application メソッド) に絞り込みました。後者から:
結果 = self.server.wsgi_application(self.wsgi_environ, self.wsgi_start_response)
cascade.pyのcall関数では、ファイルは一時ファイルに書き込まれているように見えます。関連するループは次の場所から始まります。
copy_len > 0 の間:
次に、開いているファイルにチャンクを 1 つずつ書き込みます。これらの書き込みが個別に例外をスローすることはありません。ただし、サーバーはこれらの書き込み中にランダムに見えるだけで「立ち去る」ことがよくあります (時間もこれと相関していないようです)。したがって、減少しているcopy_lenサイズを出力すると、それがある程度まで減少するのを見て、サーバーが突然「接続リセット」を送信します(または、少なくともクライアントはそうすると思います)およびメソッド終了したようです (ループが終了したかのように、copy_len が出力されなくなりますが、0 ではありませんでした)。
1)これは散発的にしか発生せず、2)実際のエラー/例外を追跡できないようです-それは一種の...死ぬので、私は完全に困惑しています。
問題があれば、ペースト 1.7.3、Python 2.7、および Fedora OS を実行しています。何が起こっているのか、どうすればこれを解決できるのか、誰かが洞察を持っていますか? 助けてくれてありがとう。