2011-02-04 7 views
8

Ho visto questo errore sempre di più ultimamente. Sto usando il browser Chrome-channel su Ubuntu 10.10. Quando aggiorno una pagina Web, il server dev_appserver sembra bloccarsi. Dopo un timeout, se completa la richiesta.Perché dev_appserver.py (server di sviluppo App Engine) è in attesa di una richiesta?

Se digito CTRL-C nella finestra del terminale appserver, sembra a "scollare" il server dopo la visualizzazione di questa traccia indietro:

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 

Stranamente, quando ho portato fino Firefox per vedere se è legato alla Solo Chrome, il problema è andato via (sia su Firefox che su Chrome).

che sto interpretando questo come il browser mantenendo la precedente richiesta aperta non tirando completamente tutti i byte dalla risposta. Poiché il server dev è single-threaded, non elaborerà ulteriori richieste fino a quando il vecchio timeout.

Qualcuno ha altre informazioni qui? È estremamente fastidioso quando ciò accade, in quanto devo uccidere e riavviare app_devserver per continuare.

+0

La mia ipotesi è che Chrome utilizzi connessioni keepalive: viene letta l'intera risposta, ma è in grado di mantenere aperta la connessione per accelerare eventuali richieste successive. Non sono sicuro di come disabilitarlo in base al server. –

+0

Sembra che tu stia usando una versione non rilasciata di chrome? La stalla attuale fa la stessa cosa? Utilizzo Chrome e sviluppo per GAE senza problemi. – Matt

+0

Stranamente per me questo sembra accadere solo quando si esegue in una finestra di navigazione in incognito in Chrome ... –

risposta

6

Ci sono diversi post su questo nei gruppi. Apparentemente Chrome invierà più richieste, quindi in qualche modo si conclude che l'SDK blocca su una delle richieste.

Ho visto un paio di utenti che iniziano say Chrome con --disable-preconnect aiuta.

+1

Grazie per averlo trovato. Ecco una buona spiegazione dal gruppo Google App Engine: Chrome apre più connessioni al server, ma invia la richiesta alla seconda che si è connessa prima della prima. Poiché lo dev_appserver è a thread singolo e può gestire solo 1 richiesta in un'ora , la richiesta si bloccherà tentando di connettersi. https://groups.google.com/group/google-appengine-python/browse_thread/thread/619d46a1e3d08c67 – mckoss

+0

L'aggiornamento del browser che si connetteva originariamente aiuta, ma sembra che usare IE o FireFox potrebbe essere la strada da percorrere. Grazie! – crizCraig

+0

stella questo problema a +1 di 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

Problemi correlati