2

私は Ubuntu 16.04 で Django アプリに取り組んでいますが、最近、Django アプリのテスト スイートでセレンを使用した機能テストが失敗する (タイムアウト) ことがあることに気付きました。これらは以前に合格したテストであり、コードは変更されていません。これが発生すると、どのテストが失敗するかはランダムに見えます。ある実行でテスト A が失敗し、次の実行でテスト B が失敗し、A が合格します。ただし、通常失敗するのは、外部 Web サービスへの呼び出し (Google Maps API 呼び出し)、または外部ライブラリの読み込み (CDN を介した Font Awesome または Bootstrap の読み込み) のようです。これらのリソースが読み込まれるのを待って、セレンがタイムアウトします。

このような場合、開発サーバー ( ./manage.py runserver) を使用してサイトをローカルで実行すると、通常は通常よりも遅くなります (つまり、一部のページの読み込みが通常よりも大幅に遅くなったり、完全に読み込まれなかったりします)。

別のプロセスが同じポートまたはその性質のものを使用/使用しようとしているように、私のコンピューターのある種のネットワークトラフィックが Django の開発およびテストサーバーをブロックまたは速度を低下させているのではないかと疑っています。

この問題が特に深刻だったある時点で、同じマシンのドロップボックスに最大 1 GB のファイルをアップロードしようとしていることに気付きました。このプロセスを停止すると、テスト スイートと開発サーバーの両方が問題なく動作し始めました。また、Google ミュージック マネージャを介して音楽ファイルをアップロードしていたときに、ミュージック マネージャを終了すると、テストと開発サーバーが正常に戻りました。ただし、現在同じ問題が発生しており、現在、主要なファイルのダウンロードまたはアップロードを行っていません (認識しています)。

したがって、これらが偶然ではないと仮定すると、あらゆる種類の大量のネットワーク トラフィックが Django 開発サーバーとテスト サーバーで問題を引き起こす可能性がありますか、それとも私のマシンの特定のプロセスが同じポート/リソースを使用しようとしていることが原因ですか? /Djangoサーバーとして何か?このような問題をどのように診断/解決できますか?

問題の洞察を求めてSOや他の場所を検索しましたが、解決策を見つけるのに苦労しています。問題の内容や、検索エンジンが理解できる方法でそれを明確にする方法がよくわからないためだと思います.

私はツールを使用してみましたが、他のプロセスが(で実行されている開発サーバーの場合) および(テストサーバーが実行されているように見える場所) でnetstat実行されている疑いがありますが、私は本当に確信が持てないことを認めますそこで何を探すべきか、あるいはそもそもそこを見るべきかどうか。127.0.0.1:8000runserver127.0.0.1:8081

私の無知を許してください。私はネットワークの問題に慣れていません (それが私が経験している場合) であり、ベテランの皮をむくような方法でこれについて話している可能性があることを認識しています。この質問があいまいすぎる場合は、事前にお詫び申し上げます。反対票を投じる必要がある場合は、質問をより明確/より有用にするために提供できる追加情報をお知らせください。

この投稿の準備に費やした時間の中で、問題は再び自然に解消され、すべてのテストに合格しましたが、再発することはわかっているので、アドバイスをいただければ幸いです. ありがとうございました!

4

1 に答える 1

1

考えられる問題の 1 つは、開発モードの Django サーバーがすべてのデータベース リクエストを保存することです。

また、DEBUG をオンにして実行すると、Django は実行するすべての SQL クエリを記憶することを覚えておくことも重要です。これはデバッグ時に役立ちますが、運用サーバーではメモリを急速に消費します。

設定を入れても同じ現象が発生DEBUG = Falseしますか? サーバーを再起動すると解決しますか?

于 2016-08-24T16:50:16.843 に答える