2011-02-04 62 views
8

Tôi đã nhìn thấy lỗi này nhiều hơn và nhiều hơn nữa gần đây. Tôi đang sử dụng trình duyệt kênh dev của Chrome trên Ubuntu 10.10. Khi tôi làm mới một trang web - dev_appserver dường như bị treo. Sau khi hết thời gian chờ, nếu hoàn thành yêu cầu.Tại sao dev_appserver.py (máy chủ ứng dụng của máy chủ ứng dụng) treo chờ yêu cầu?

Nếu tôi gõ Ctrl-C trong cửa sổ terminal appserver, có vẻ như để "cất cánh bay lên" máy chủ sau khi hiển thị trở lại đây dấu vết:

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 

Nhưng kỳ lạ, khi tôi lớn lên Firefox để xem nếu nó liên quan đến Chỉ Chrome, sự cố đã biến mất (cả trên Firefox VÀ trên Chrome).

Tôi giải thích điều này là trình duyệt giữ yêu cầu trước đó mở bằng cách không hoàn toàn kéo tất cả các byte khỏi phản hồi. Kể từ khi dev_server là đơn luồng, nó sẽ không xử lý bất kỳ yêu cầu thêm cho đến khi một lần cũ ra ngoài.

Bất kỳ ai có bất kỳ thông tin chi tiết nào khác ở đây? Nó cực kỳ khó chịu khi điều này xảy ra, vì tôi phải giết và khởi động lại app_devserver để tiếp tục.

+0

Tôi đoán là Chrome đang sử dụng các kết nối liên tục - nó đọc toàn bộ phản hồi, nhưng nó đang giữ kết nối mở để tăng tốc mọi yêu cầu tiếp theo. Tôi không chắc chắn làm thế nào để vô hiệu hóa này trên một cơ sở cho mỗi máy chủ. –

+0

Có vẻ như bạn đang sử dụng phiên bản Chrome không phát hành? Liệu ổn định hiện tại làm điều tương tự? Tôi đã sử dụng chrome và phát triển cho GAE mà không gặp vấn đề gì. – Matt

+0

Thật lạ lùng với tôi điều này dường như chỉ xảy ra khi chạy trong một cửa sổ ẩn danh trong Chrome ... –

Trả lời

6

Có một số bài đăng về điều này trong các nhóm. Rõ ràng Chrome sẽ gửi nhiều yêu cầu, sau đó bằng cách nào đó nó sẽ làm cho SDK chặn một trong các yêu cầu.

Tôi đã thấy một vài người dùng say bắt đầu Chrome bằng --disable-preconnect sẽ giúp.

+1

Cảm ơn bạn đã tìm thấy điều đó. Dưới đây là giải thích tốt từ App Engine Google Group: Chrome mở nhiều kết nối với máy chủ nhưng gửi yêu cầu đến kết nối thứ hai được kết nối trước lần đầu tiên. Bởi vì dev_appserver là đơn luồng và chỉ có thể xử lý 1 yêu cầu tại thời gian , yêu cầu sẽ treo cố gắng kết nối. https://groups.google.com/group/google-appengine-python/browse_thread/thread/619d46a1e3d08c67 – mckoss

+0

Làm mới trình duyệt được kết nối ban đầu có ích, nhưng có vẻ như việc sử dụng IE hoặc FireFox có thể là cách để thực hiện. Cảm ơn! – crizCraig

+0

Gắn dấu sao vấn đề này cho +1 Google: http://code.google.com/p/googleappengine/issues/detail?id=4716&q=chrome&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner % 20 Đăng nhập – crizCraig

Các vấn đề liên quan