python中的日志记录包-两个简单http服务器之间的do_POST

python中的日志记录包-两个简单http服务器之间的do_POST,python,http,logging,Python,Http,Logging,我有两个相互通信的http服务器。 该场景是serverA通过以下方式从外部而不是serverB获取POST请求: curl -X POST localhost:8888 ,然后serverA向serverB发送POST请求 以下是每台服务器的do_POST功能: class serverA_handler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_POST(self): print "serverA got

我有两个相互通信的http服务器。 该场景是serverA通过以下方式从外部而不是serverB获取POST请求:

curl -X POST localhost:8888
,然后serverA向serverB发送POST请求

以下是每台服务器的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
我在不同的终端上运行两台服务器,然后开始向serverA发送POST请求

我的问题是,对于我发送到serverA的每一个curl帖子,我在serverB中看到的都好像它接收了来自serverA的所有以前的帖子请求,再加上一个新的。。 例如:

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)
当我继续下去的时候,问题又重演了

我的代码有什么问题?

我假设addHandler是罪魁祸首,每个请求都会将处理程序计数增加1


您能在请求之外启动处理程序吗?

谢谢,这很有帮助,但我仍然不明白发生了什么。。我在函数中本地定义了logger=logging.getLogger'mylogger'。。因此,当从docs.python:addHandler返回时,它应该消失-将指定的处理程序hdlr添加到此记录器。但我的记录器每次都是新的