Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is dev_appserver.py (App Engine dev server) hanging waiting for a request?

I've been seeing this error more and more lately. I'm using the Chrome dev-channel browser on Ubuntu 10.10. When I refresh a web page - the dev_appserver seems to hang. After a timeout, if completes the request.

If I type CTRL-C in the appserver terminal window, it seems to "unstick" the server after displaying this back trace:

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

Oddly, when I brought up Firefox to see if it's related to Chrome-only, the problem went away (both on Firefox AND on Chrome).

I'm interpreting this as the browser keeping the previous request open by not completely pulling all the bytes from the response. Since the dev_server is single-threaded, it will not process any further requests until the old one times out.

Anyone have any other insight here? It's extremely annoying when this happens, as I have to kill and restart the app_devserver to keep going.

like image 961
mckoss Avatar asked Feb 04 '11 00:02

mckoss


1 Answers

There are several posts about this in the groups. Apparently Chrome will sends multiple requests, then it somehow winds up that the SDK blocks on one of the requests.

I've seen a few users say starting Chrome with --disable-preconnect helps.

like image 75
Robert Kluin Avatar answered Nov 15 '22 16:11

Robert Kluin