Google app engine 为什么dev_appserver.py(App Engine dev server)挂起等待请求?

Google app engine 为什么dev_appserver.py(App Engine dev server)挂起等待请求?,google-app-engine,google-chrome,Google App Engine,Google Chrome,最近我越来越多地看到这个错误。我正在Ubuntu 10.10上使用Chrome开发频道浏览器。当我刷新网页时,dev_appserver似乎挂起了。超时后,if完成请求 如果在appserver终端窗口中键入CTRL-C,则在显示此回溯跟踪后,似乎会“取消单击”服务器: Exception happened during processing of request from ('192.168.1.19', 48238) Traceback (most recent call last):

最近我越来越多地看到这个错误。我正在Ubuntu 10.10上使用Chrome开发频道浏览器。当我刷新网页时,dev_appserver似乎挂起了。超时后,if完成请求

如果在appserver终端窗口中键入CTRL-C,则在显示此回溯跟踪后,似乎会“取消单击”服务器:

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
奇怪的是,当我打开Firefox查看它是否只与Chrome相关时,问题就消失了(在Firefox和Chrome上)

我将其解释为浏览器通过不完全从响应中提取所有字节来保持前一个请求的打开状态。由于dev_服务器是单线程的, 在旧请求超时之前,它不会处理任何进一步的请求


有人有其他见解吗?发生这种情况时非常烦人,因为我必须关闭并重新启动app_devserver才能继续运行。

小组中有几篇关于这方面的帖子。显然,Chrome会发送多个请求,然后不知何故,SDK会阻塞其中一个请求


我见过一些用户在启动Chrome时使用--disable preconnect helps(禁用预连接帮助)。

我猜Chrome正在使用keepalive连接——它读取整个响应,但它保持连接打开以加速任何后续请求。我不知道如何在每台服务器上禁用此功能。听起来您使用的是非发布版本的chrome?现在的马厩也做同样的事情吗?我一直在使用chrome并为GAE开发,没有任何问题。奇怪的是,只有在chrome的匿名窗口中运行时才会出现这种情况……感谢您的发现。appenginegoogle小组给出了一个很好的解释:Chrome打开了多个到服务器的连接,但将请求发送到第一个之前连接的第二个服务器。由于dev_appserver是单线程的,一次只能处理1个请求,因此在尝试连接时请求将挂起。刷新最初连接的浏览器会有所帮助,但看起来使用IE或FireFox可能是一个不错的选择。谢谢将此问题添加到+1谷歌: