Python 使用日志模块发送日志时遇到问题
我有两个http服务器,它们使用日志模块相互通信Python 使用日志模块发送日志时遇到问题,python,logging,Python,Logging,我有两个http服务器,它们使用日志模块相互通信 serverA = SocketServer.TCPServer(("", 8888), myHandler) serverB = SocketServer.TCPServer(("", 7777), myHandler) 第一个serverA向serverB发送GET请求: logger = logging.getLogger('cs') logger.setLevel(logging.DEBUG) logger.addHandler(HTT
serverA = SocketServer.TCPServer(("", 8888), myHandler)
serverB = SocketServer.TCPServer(("", 7777), myHandler)
第一个serverA向serverB发送GET请求:
logger = logging.getLogger('cs')
logger.setLevel(logging.DEBUG)
logger.addHandler(HTTPHandler("localhost:7777", "/"))
logger.warning('log from serverA')
然后,serverB用POST消息回答:
class myHandler(BaseHTTPRequestHandler):
def do_GET(self):
logger = logging.getLogger('mach')
logger.setLevel(logging.DEBUG)
logger.addHandler(HTTPHandler("localhost:8888", "/",method='POST'))
print "1111"
logger.critical('POST from 7777')
print "2222"
return
在调试它时,我看到“1111”被打印出来,但“2222”没有打印出来,而且在serverA的do_POST方法中,第一行是打印命令,没有打印出来。
然而,当我用wireshark检查它时,我看到一个tcp数据包去了8888端口,它是my POST msg
那么,如果我在serverA中看不到它,会发生什么呢?两台服务器之间出现死锁。以下是场景:
- 服务器A向服务器B发送GET请求并阻止等待响应,即,在收到响应(或发生错误)之前,以下消息不会返回:
- 服务器B在
中从服务器A接收GET请求,但不发送回复。相反,它将POST请求发送回服务器a,然后服务器B阻止等待服务器a的响应:do_GET()
logger.critical('POST from 7777')
- 这两个服务器都是单线程的,并且都在等待另一个服务器的响应时被阻塞,因此出现死锁
logger.critical('POST from 7777')