2011-02-04 3 views
8

私は最近、このエラーを見てきました。私はUbuntu 10.10でChromeのdev-channelブラウザを使用しています。私がWebページを更新すると、dev_appserverがハングアップするようです。タイムアウト後、要求が完了した場合。dev_appserver.py(App Engine dev server)がリクエストを待っているのはなぜですか?

私はアプリケーションサーバーのターミナルウィンドウでCTRL-Cを入力した場合、このバックトレースを表示した後、サーバーを「引き離す」のようです:

奇妙なことに、私はそれが関連していますかどうかを確認するためのFirefoxを育てたとき
Exception happened during processing of request from ('192.168.1.19', 48238) 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.5/SocketServer.py", line 222, in handle_request 
    self.process_request(request, client_address) 
    File "/usr/local/lib/python2.5/SocketServer.py", line 241, in process_request 
    self.finish_request(request, client_address) 
    File "/usr/local/lib/python2.5/SocketServer.py", line 254, in finish_request 
    self.RequestHandlerClass(request, client_address, self) 
    File "/usr/local/google_appengine/google/appengine/tools/dev_appserver.py", line 3123, in __init__ 
    BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kwargs) 
    File "/usr/local/lib/python2.5/SocketServer.py", line 522, in __init__ 
    self.handle() 
    File "/usr/local/lib/python2.5/BaseHTTPServer.py", line 316, in handle 
    self.handle_one_request() 
    File "/usr/local/lib/python2.5/BaseHTTPServer.py", line 299, in handle_one_request 
    self.raw_requestline = self.rfile.readline() 
    File "/usr/local/lib/python2.5/socket.py", line 346, in readline 
    data = self._sock.recv(self._rbufsize) 
KeyboardInterrupt 

Chromeのみ、問題は解決しました(FirefoxとChromeの両方)。

私はこれを、以前のリクエストを開いたままにして、応答からすべてのバイトを完全にプルしないように解釈しています。 dev_serverはシングルスレッドなので、 は古いものがタイムアウトするまでそれ以上の要求を処理しません。

他の人の意見はありますか?これが起こると、私はapp_devserverをkillして再起動しなければならないので、非常に迷惑です。

+0

私は、Chromeがキープアライブ接続を使用していると推測しています。応答はすべて読み込まれていますが、後続の要求を高速化するために接続を開いています。私はどのようにサーバーごとにこれを無効にするか分からない。 –

+0

Chromeの非リリース版を使用しているような感じですか?現在の安定版は同じことをしていますか?私はクロムを使用しており、問題なくGAEのために開発しています。 – Matt

+0

奇妙なことに、これはChromeのシークレットウィンドウで実行している場合にのみ発生します... –

答えて

6

グループに関する記事がいくつかあります。どうやらChromeは複数のリクエストを送信し、SDKブロックが要求の1つにブロックされたことをどうにかすることになります。

私はいくつかのユーザーを見てきましたsay --disable-preconnectヘルプでChromeを起動しています。

+1

見つけていただきありがとうございます。 App Engine Googleグループの説明は次のとおりです。 Chromeはサーバとの複数の接続を開きますが、最初に接続されている2番目のサーバには というリクエストを送信します。 dev_appserverはシングルスレッドで、 の時間に1つの要求しか処理できないため、要求は接続しようとするとハングします。 https://groups.google.com/group/google-appengine-python/browse_thread/thread/619d46a1e3d08c67 – mckoss

+0

元々接続していたブラウザをリフレッシュするのは効果的ですが、IEやFireFoxを使用しているように見えます。ありがとう! – crizCraig

+0

この問題に+1するには、Googleにhttp://code.google.com/p/googleappengine/issues/detail?id=4716&q=chrome&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner %20Log – crizCraig

関連する問題