Python“asynchat”聊天服务器-使客户端等待服务器启动

Python“asynchat”聊天服务器-使客户端等待服务器启动,python,asyncore,Python,Asyncore,我使用python中的asynchat模块创建了一个简单的聊天服务器。我的意图是让聊天客户端等待服务器启动并运行 我尝试使用handle\u connect\u事件将connected设置为True,如下所示: def handle_connect_event(self): self.connected = True 然后我在connect命令上循环,直到connected变为真: while not self.connected: try: self.

我使用python中的asynchat模块创建了一个简单的聊天服务器。我的意图是让聊天客户端等待服务器启动并运行

我尝试使用handle\u connect\u事件将connected设置为True,如下所示:

def handle_connect_event(self):
        self.connected = True
然后我在connect命令上循环,直到connected变为真:

while not self.connected:
    try:
        self.connect((host, port))
    except:
         time.sleep(1)
我在asyncore dispatcher代码中读到,当连接成功时,将调用handle\u connect\u事件:

def connect(self, address):
    self.connected = False
    err = self.socket.connect_ex(address)
    # XXX Should interpret Winsock return values
    if err in (EINPROGRESS, EALREADY, EWOULDBLOCK):
        return
    if err in (0, EISCONN):
        self.addr = address
        self.handle_connect_event()
    else:
        raise socket.error(err, errorcode[err])
所以我相信当连接被创建时,handle_connect_事件中的代码应该被触发,从而将connected设置为True,从而打破我的循环。然而,这并没有发生

有人知道为什么吗?若这个方法是错误的,那个么我们如何让聊天客户端等待服务器呢


我对这些东西不熟悉,所以请记住我是个新手:

我想我的机器有一段时间很疯狂,但我的代码工作正常: 我能够启动2台客户机,然后启动服务器并完成任务


有史以来最好的感觉!:

我不知道为什么它没有连接,但您的except将捕获所有异常,而不仅仅是连接错误,因此如果出现其他错误,例如handle_connect_事件中的键入错误,它将永远不会连接,但也不会报告错误。如果可能的话,最好指定应该捕获哪些错误。