Программа чата, использующая socketserver, как заставить клиента слушать вечно?

До использования socketserver и TCP мой чат-клиент слушал так:

def recvData(self):
    try:
        while True:
            data = self.sock.recv(1024)
            if data:
                data_handler(data)
    except:
        pass

while running:
    dt = clock.tick(60)
    client.recvData()

Как вы эмулируете это поведение для клиента, когда его сервер использует сервер сокетов TCP?

EDIT вот моя (плохая) попытка:

    def recvData(self):
        recvsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        recvsock.connect(("192.168.0.7", 1234))
        recvsock.setblocking(0)
        while True:
            data = recvsock.recv(1024)
            if data:
                print(data)
                data_handler(data)

Я собираюсь:

BlockingIOError: [WinError 10035] A non-blocking socket operation could not be completed immediately

person Dysprosium Dysprosium    schedule 04.04.2016    source источник
comment
Вы действительно хотите неблокирующий сокет?   -  person DaveBensonPhillips    schedule 04.04.2016
comment
Я так думаю, поскольку я могу получать что-то, делая что-то еще... или я неправильно понимаю блокировку сокетов?   -  person Dysprosium Dysprosium    schedule 04.04.2016
comment
Нет, похоже, у вас есть правильное понимание, за исключением того, что вы пытаетесь сделать блокирующий вызов (recvsock.recv) и не обрабатываете выброшенное исключение. Вы можете изучить использование модуля select или asyncio для достижения того, что вам нужно.   -  person DaveBensonPhillips    schedule 04.04.2016
comment
@HumphreyTriscuit Теперь у меня есть исключение: пройти, потому что я, очевидно, не могу гарантировать получение части данных каждый раз, когда я пытаюсь это сделать ... но я все еще получаю ту же ошибку ....   -  person Dysprosium Dysprosium    schedule 04.04.2016
comment
См. stackoverflow.com/questions/11647046/ для реализации с использованием try/except, хотя я думаю, что такой подход немного наивен. select/asyncio здесь было бы полезнее   -  person DaveBensonPhillips    schedule 04.04.2016