2015-02-06 28 views
0

我有兩個相互通信的http服務器。 的情況是,serverA的獲得從 「外部」 POST請求(未serverB上,通過:python中的日誌包 - 兩個簡單http服務器之間的do_POST

curl -X POST localhost:8888 

),然後發送serverA的POST請求到ServerB。

這裏有do_POST功能對於每個服務器:

class serverA_handler(SimpleHTTPServer.SimpleHTTPRequestHandler): 
    def do_POST(self): 
     print "serverA got a POST from curl"  
     content_len = int(self.headers.getheader('content-length', 0)) 
     post_body = self.rfile.read(content_len) 
     print "POST = ", post_body 
     print "serverA is sending POST to serverB" 
     logger = logging.getLogger('mylogger') 
     logger.setLevel(logging.WARNING) 
     logger.addHandler(HTTPHandler("localhost:9999", "/", method='POST')) 
     logger.warning('sending POST to serverB') 
     print "END DO_POST of serverA" 
     return 

class serverB_handler(SimpleHTTPServer.SimpleHTTPRequestHandler): 
    def do_POST(self): 
     print "serverB got a POST from serverA"  
     content_len = int(self.headers.getheader('content-length', 0)) 
     post_body = self.rfile.read(content_len) 
     print "POST = ", post_body 
     print "\nEND DO_POST serverA" 
     return 

我運行在不同的終端兩臺服務器上,然後開始發送POST請求serverA的。

我的問題是,與每一個捲曲後,我送serverA的,我在serverB上看到,如果它recived從serverA的,再加上新的.. 以前所有的POST請求,例如:

1. curl cmd --> END DO_POST of serverA ---> END DO_POST of serverB 
2. curl cmd --> END DO_POST of serverA ---> END DO_POST of serverB 
               END DO_POST of serverB 
3. curl cmd --> END DO_POST of serverA ---> END DO_POST of serverB 
               END DO_POST of serverB 
               END DO_POST of serverB 

等.. 如果我重新啓動serverA的,但保持serverB上運行,我看到的第一個週期

curl cmd --> END DO_POST of serverA ---> END DO_POST of serverB (one time) 

和我繼續這個問題重演..

我的代碼有什麼問題?

回答

0

我假設addHandler是難辭其咎的,由1

做增量處理器計數的每個請求你能發起請求之外的處理程序?

+0

謝謝,它有幫助,但我仍然不明白髮生了什麼..我在本地函數中定義了logger = logging.getLogger('mylogger')..所以它應該在從docs.python返回 時消失:addHandler() - 「將指定的處理程序hdlr添加到此記錄器。」但我的記錄器每次都是新的 – user1047069 2015-02-06 18:03:00

相關問題