python中的日志记录包-两个简单http服务器之间的do_POST
我有两个相互通信的http服务器。 该场景是serverA通过以下方式从外部而不是serverB获取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
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添加到此记录器。但我的记录器每次都是新的