2013-10-29 28 views
1

我的問題上......延遲的GET請求basehttpserver Ubuntu的服務器

  1. 我們有一個本地網絡。
  2. 我使用Ubuntu Server(12.04.2)在虛擬機上運行python basehttpserver。

當我打開瀏覽器鏈接192.168.101.3:8081/index.html,得到請求處理10秒,爲什麼?

例如basehttpserver

class ReqHandler(BaseHTTPServer.BaseHTTPRequestHandler): 
    def __init__(self, request, client_address, server): 
     BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, request, client_address, server) 

    def do_GET(self): 
     self.performReq(self.path.decode('utf-8')) 

    def performReq (self, req): 
     curDir = os.getcwd() 
     """ Performing http request """ 
     if req == '/' : 
      self.path = '/index.html' 
     fname = curDir + '/' + self.path[1:] 
     fname = unquote(fname).decode('utf8') 
     try: 
      self.send_response(200,"Ok!") 
      self.send_header('Content', 'text/xml; charset=UTF-8') 
      self.end_headers() 
      f = open(fname, 'rb') 
      self.wfile.write(f.read()) 
      f.close() 
      print 'file '+fname+" Ok" 

     except IOError: 
      print 'no file '+fname 
      self.send_error(404) 

def run(server_class=BaseHTTPServer.HTTPServer): 
    server_address = ('', 8081) 
    server = server_class(server_address, ReqHandler) 
    print('server ok!') 
    server.serve_forever() 

從服務器 log server

IP機Ubuntu服務器192.168.101.3

對不起,我的英語截圖。

我的解決方案 - 我在ReqHandler

添加了以下方法
def log_message(self,fmt, *args): 
    print fmt%args 
+0

配置文件您的代碼與神話般的python「個人資料」庫,這將告訴你什麼和爲什麼:http://docs.python.org/2/library/profile.html –

+0

我有相同的與OSX上的basehttp服務器問題。我正在做一個簡單的GET請求來從mongodb中檢索單個文檔。請求每次延遲約10-20秒。在此期間,Chrome控制檯顯示狀態「正在等待」。任何其他請求,例如POST或PUT,都以毫秒爲單位完成。此外,GET請求到外部網站正常工作,所以我絕對不認爲客戶端是問題。請分享,如果你找到一個解決方案,我會做同樣的。 –

回答

1

如果沒有連接到互聯網的本地網絡上測試你的web應用,你可能會遇到這些延遲。這是因爲BaseHTTPServer默認在客戶端IP上執行查找(用於記錄目的)。檢查這個黑客:http://bugs.python.org/issue6085