2011-02-04 9 views
8

He estado viendo este error cada vez más últimamente. Estoy usando el navegador Chrome dev-channel en Ubuntu 10.10. Cuando actualizo una página web, el dev_appserver parece bloquearse. Después de un tiempo de espera, si completa la solicitud.¿Por qué dev_appserver.py (servidor de desarrollo de App Engine) está pendiente de una solicitud?

Si pulse Ctrl-C en la ventana de terminal de servidor de aplicaciones, que parece "unstick" el servidor después de mostrar esta traza de vuelta:

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 

Curiosamente, cuando traje Firefox para ver si está relacionado a Solo en Chrome, el problema desapareció (tanto en Firefox como en Chrome).

Estoy interpretando esto como el navegador que mantiene abierta la solicitud anterior al no extraer completamente todos los bytes de la respuesta. Como dev_server es de subproceso único, no procesará ninguna otra solicitud hasta que se agote el tiempo de espera anterior.

¿Alguien tiene alguna otra idea aquí? Es extremadamente molesto cuando sucede esto, ya que tengo que matar y reiniciar el app_devserver para seguir.

+0

Supongo que Chrome está utilizando conexiones keepalive: ha leído toda la respuesta, pero mantiene la conexión abierta para acelerar las solicitudes posteriores. No estoy seguro de cómo deshabilitar esto por servidor. –

+0

¿Parece que está utilizando una versión no comercial de Chrome? ¿El establo actual hace lo mismo? He estado usando Chrome y desarrollándome para GAE sin problemas. – Matt

+0

Por extraño que parezca, esto solo ocurre cuando se ejecuta en una ventana de incógnito en Chrome ... –

Respuesta

6

Hay varias publicaciones sobre esto en los grupos. Aparentemente, Chrome enviará varias solicitudes, luego de alguna forma termina con los bloqueos del SDK en una de las solicitudes.

He visto algunos usuarios say comenzando Chrome con --disable-preconnect ayuda.

+1

Gracias por encontrarlo. Aquí hay una buena explicación del Grupo de Google de App Engine: Chrome abre múltiples conexiones al servidor, pero envía la solicitud a la segunda que se conectó antes que la primera. Como dev_appserver tiene un solo subproceso y solo puede gestionar 1 solicitud en un tiempo , la solicitud se bloqueará al intentar conectarse. https://groups.google.com/group/google-appengine-python/browse_thread/thread/619d46a1e3d08c67 – mckoss

+0

Actualizar el navegador que se conectó originalmente ayuda, pero parece que usar IE o FireFox podría ser el camino a seguir. ¡Gracias! – crizCraig

+0

Resalte este problema a +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

Cuestiones relacionadas